{"type": "func", "start": 6443767112, "end": 6443767306, "name": "ceil", "pseudocode": "// \n// ceil from 0x180141548 to 0x18014160a (194 bytes)\n// \n// 2 xrefs:\n// > __acrt_fltout @ 0x18013e39c\n// > <???> @ 0x180203cc8\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\ndouble __cdecl ceil(double X)\n{\n  double v1; // rdx\n  unsigned __int64 v2; // rax\n  _BOOL8 v3; // r8\n  double v4; // rax\n\n  v1 = X;\n  v2 = *(_QWORD *)&X & 0x7FFFFFFFFFFFFFFFLL;\n  v3 = *(_QWORD *)&X != (*(_QWORD *)&X & 0x7FFFFFFFFFFFFFFFLL);\n  if ( (*(_QWORD *)&X & 0x7FFFFFFFFFFFFFFFuLL) < 0x4340000000000000LL )\n  {\n    if ( v2 >= 0x3FF0000000000000LL )\n    {\n      *(_QWORD *)&v4 = *(_QWORD *)&X & ~((1LL << (51 - (unsigned __int8)(*(_QWORD *)&X >> 52))) - 1);\n      X = v4;\n      if ( !v3 && *(_QWORD *)&v4 != *(_QWORD *)&v1 )\n        return v4 + 1.0;\n    }\n    else if ( v2 )\n    {\n      if ( *(_QWORD *)&X == (*(_QWORD *)&X & 0x7FFFFFFFFFFFFFFFLL) )\n        return 1.0;\n      else\n        return -0.0;\n    }\n  }\n  else if ( v2 > 0x7FF0000000000000LL )\n  {\n    *(_QWORD *)&X |= 0x8000000000000uLL;\n  }\n  return X;\n}", "assembly": "; \n; ceil from 0x180141548 to 0x18014160a (194 bytes)\n; \n; 2 xrefs:\n; > __acrt_fltout @ 0x18013e39c\n; > <???> @ 0x180203cc8\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nxor     r8d, r8d                                                       ; +0x0, 0x180141548\nmovsd   [rsp+arg_0], xmm0                                              ; +0x3, 0x18014154b\nmov     rdx, [rsp+arg_0]                                               ; +0x9, 0x180141551\nmov     rcx, 7FFFFFFFFFFFFFFFh                                         ; +0xe, 0x180141556\nmov     rax, rdx                                                       ; +0x18, 0x180141560\nand     rax, rcx                                                       ; +0x1b, 0x180141563\nmov     rcx, 4340000000000000h                                         ; +0x1e, 0x180141566\ncmp     rdx, rax                                                       ; +0x28, 0x180141570\nsetnz   r8b                                                            ; +0x2b, 0x180141573\ncmp     rax, rcx                                                       ; +0x2f, 0x180141577\njb      short loc_180141593                                            ; +0x32, 0x18014157a\nmov     rcx, 7FF0000000000000h                                         ; +0x34, 0x18014157c\ncmp     rax, rcx                                                       ; +0x3e, 0x180141586\njbe     short locret_180141609                                         ; +0x41, 0x180141589\nmov     rcx, rdx                                                       ; +0x43, 0x18014158b\njmp     _handle_nan                                                    ; +0x46, 0x18014158e\nmov     rcx, 3FF0000000000000h                                         ; +0x4b, 0x180141593\ncmp     rax, rcx                                                       ; +0x55, 0x18014159d\njnb     short loc_1801415CD                                            ; +0x58, 0x1801415a0\ntest    rax, rax                                                       ; +0x5a, 0x1801415a2\njz      short locret_180141609                                         ; +0x5d, 0x1801415a5\ntest    r8, r8                                                         ; +0x5f, 0x1801415a7\njz      short loc_1801415C3                                            ; +0x62, 0x1801415aa\nmov     rax, 8000000000000000h                                         ; +0x64, 0x1801415ac\nmov     [rsp+arg_0], rax                                               ; +0x6e, 0x1801415b6\nmovsd   xmm0, [rsp+arg_0]                                              ; +0x73, 0x1801415bb\njmp     short locret_180141609                                         ; +0x79, 0x1801415c1\nmovsd   xmm0, cs:qword_18016F8B0                                       ; +0x7b, 0x1801415c3\njmp     short locret_180141609                                         ; +0x83, 0x1801415cb\nmov     rax, rdx                                                       ; +0x85, 0x1801415cd\nmov     ecx, 33h ; '3'                                                 ; +0x88, 0x1801415d0\nshr     rax, 34h                                                       ; +0x8d, 0x1801415d5\nsub     cl, al                                                         ; +0x91, 0x1801415d9\nmov     eax, 1                                                         ; +0x93, 0x1801415db\nshl     rax, cl                                                        ; +0x98, 0x1801415e0\ndec     rax                                                            ; +0x9b, 0x1801415e3\nnot     rax                                                            ; +0x9e, 0x1801415e6\nand     rax, rdx                                                       ; +0xa1, 0x1801415e9\nmov     [rsp+arg_0], rax                                               ; +0xa4, 0x1801415ec\nmovsd   xmm0, [rsp+arg_0]                                              ; +0xa9, 0x1801415f1\ntest    r8, r8                                                         ; +0xaf, 0x1801415f7\njnz     short locret_180141609                                         ; +0xb2, 0x1801415fa\ncmp     rax, rdx                                                       ; +0xb4, 0x1801415fc\njz      short locret_180141609                                         ; +0xb7, 0x1801415ff\naddsd   xmm0, cs:qword_18016F8B0                                       ; +0xb9, 0x180141601\nretn                                                                   ; +0xc1, 0x180141609", "xrefs": ["__acrt_fltout @ 0x18013e39c", "<???> @ 0x180203cc8"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}