{"type": "func", "start": 352588, "end": 352932, "name": "sub_5614C", "pseudocode": "// \n// sub_5614C from 0x5614c to 0x562a4 (344 bytes)\n// \n// 2 xrefs:\n// > sub_58B74 @ 0x58bac\n// > sub_5BA6C @ 0x5baa0\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\n__int64 __fastcall sub_5614C(__int64 a1, __int64 a2, signed int a3, signed int a4, unsigned int a5, char a6)\n{\n  unsigned int v10; // w11\n  __int64 v12; // x8\n  __int64 v13; // x11\n  __int64 v14; // x12\n  __int64 v15; // x13\n  int v16; // w14\n  __int64 result; // x0\n  int v18; // w25\n  __int64 v19; // x0\n\n  if ( (a6 & 1) == 0 )\n    return 0;\n  if ( !a2 )\n  {\n    if ( *(_QWORD *)(a1 + 64) )\n    {\n      ((void (*)(void))loc_577E4)();\n      *(_DWORD *)(a1 + 56) = 0;\n      *(_QWORD *)(a1 + 64) = 0;\n    }\n    return 0;\n  }\n  if ( a5 )\n    v10 = a5;\n  else\n    v10 = a4;\n  v12 = 0;\n  v13 = 4LL * (int)v10;\n  v14 = a2;\n  while ( v12 < a3 )\n  {\n    v15 = 0;\n    while ( v15 < a4 )\n    {\n      v16 = *(_DWORD *)(v14 + 4 * v15++);\n      if ( (~v16 & 0x7F800000) == 0 )\n        return 29;\n    }\n    ++v12;\n    v14 += v13;\n  }\n  if ( *(_QWORD *)(a1 + 64) )\n  {\n    if ( *(__int16 *)(a1 + 56) >= a4 && *(__int16 *)(a1 + 58) >= a3 )\n      goto LABEL_26;\n    ((void (*)(void))loc_577E4)();\n  }\n  if ( a4 <= a3 )\n    v18 = a3;\n  else\n    v18 = a4;\n  v19 = ((__int64 (__fastcall *)(__int64, _QWORD, __int64))loc_57858)(\n          *(_QWORD *)(a1 + 8) + 67784LL,\n          (unsigned int)(4 * a3 * v18),\n          184320);\n  if ( !v19 )\n    return 38;\n  *(_WORD *)(a1 + 56) = v18;\n  *(_WORD *)(a1 + 58) = a3;\n  *(_QWORD *)(a1 + 64) = v19;\nLABEL_26:\n  result = sub_B7BB4(a1 + 56, a2, (unsigned int)a3, (unsigned int)a4, a5);\n  if ( !(_DWORD)result )\n    return 0;\n  return result;\n}", "assembly": "; \n; sub_5614C from 0x5614c to 0x562a4 (344 bytes)\n; \n; 2 xrefs:\n; > sub_58B74 @ 0x58bac\n; > sub_5BA6C @ 0x5baa0\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\nSTR             X25, [SP,#-0x10+var_40]!                               ; +0x0, 0x5614c\nSTP             X24, X23, [SP,#0x40+var_30]                            ; +0x4, 0x56150\nSTP             X22, X21, [SP,#0x40+var_20]                            ; +0x8, 0x56154\nSTP             X20, X19, [SP,#0x40+var_10]                            ; +0xc, 0x56158\nSTP             X29, X30, [SP,#0x40+var_s0]                            ; +0x10, 0x5615c\nADD             X29, SP, #0x40                                         ; +0x14, 0x56160\nTBZ             W5, #0, loc_561F8                                      ; +0x18, 0x56164\nMOV             X23, X1                                                ; +0x1c, 0x56168\nMOV             X19, X0                                                ; +0x20, 0x5616c\nCBZ             X1, loc_561DC                                          ; +0x24, 0x56170\nCMP             W4, #0                                                 ; +0x28, 0x56174\nMOV             W21, W3                                                ; +0x2c, 0x56178\nMOV             W22, W2                                                ; +0x30, 0x5617c\nCSEL            W11, W3, W4, EQ                                        ; +0x34, 0x56180\nMOV             W20, W4                                                ; +0x38, 0x56184\nMOV             X8, XZR                                                ; +0x3c, 0x56188\nSXTW            X9, W21                                                ; +0x40, 0x5618c\nSXTW            X10, W22                                               ; +0x44, 0x56190\nSBFIZ           X11, X11, #2, #0x20 ; ' '                              ; +0x48, 0x56194\nMOV             X12, X23                                               ; +0x4c, 0x56198\nCMP             X8, X10                                                ; +0x50, 0x5619c\nB.GE            loc_56214                                              ; +0x54, 0x561a0\nMOV             X13, XZR                                               ; +0x58, 0x561a4\nCMP             X13, X9                                                ; +0x5c, 0x561a8\nB.GE            loc_561C8                                              ; +0x60, 0x561ac\nLDR             W14, [X12,X13,LSL#2]                                   ; +0x64, 0x561b0\nADD             X13, X13, #1                                           ; +0x68, 0x561b4\nMVN             W14, W14                                               ; +0x6c, 0x561b8\nTST             W14, #0x7F800000                                       ; +0x70, 0x561bc\nB.NE            loc_561A8                                              ; +0x74, 0x561c0\nB               loc_561D4                                              ; +0x78, 0x561c4\nADD             X8, X8, #1                                             ; +0x7c, 0x561c8\nADD             X12, X12, X11                                          ; +0x80, 0x561cc\nB               loc_5619C                                              ; +0x84, 0x561d0\nMOV             W0, #0x1D                                              ; +0x88, 0x561d4\nB               loc_561FC                                              ; +0x8c, 0x561d8\nLDR             X1, [X19,#0x40]                                        ; +0x90, 0x561dc\nCBZ             X1, loc_561F8                                          ; +0x94, 0x561e0\nLDR             X8, [X19,#8]                                           ; +0x98, 0x561e4\nMOV             W9, #0x8C8                                             ; +0x9c, 0x561e8\nBL              loc_577E4                                              ; +0xa0, 0x561ec\nSTR             WZR, [X19,#0x38]                                       ; +0xa4, 0x561f0\nSTR             XZR, [X19,#0x40]                                       ; +0xa8, 0x561f4\nMOV             W0, WZR                                                ; +0xac, 0x561f8\nLDP             X29, X30, [SP,#0x40+var_s0]                            ; +0xb0, 0x561fc\nLDP             X20, X19, [SP,#0x40+var_10]                            ; +0xb4, 0x56200\nLDP             X22, X21, [SP,#0x40+var_20]                            ; +0xb8, 0x56204\nLDP             X24, X23, [SP,#0x40+var_30]                            ; +0xbc, 0x56208\nLDR             X25, [SP+0x40+var_40],#0x50                            ; +0xc0, 0x5620c\nRET                                                                    ; +0xc4, 0x56210\nLDR             X1, [X19,#0x40]                                        ; +0xc8, 0x56214\nADD             X24, X19, #0x38 ; '8'                                  ; +0xcc, 0x56218\nCBZ             X1, loc_56244                                          ; +0xd0, 0x5621c\nLDRSH           W8, [X24]                                              ; +0xd4, 0x56220\nCMP             W8, W21                                                ; +0xd8, 0x56224\nB.LT            loc_56238                                              ; +0xdc, 0x56228\nLDRSH           W8, [X19,#0x3A]                                        ; +0xe0, 0x5622c\nCMP             W8, W22                                                ; +0xe4, 0x56230\nB.GE            loc_5627C                                              ; +0xe8, 0x56234\nLDR             X8, [X19,#8]                                           ; +0xec, 0x56238\nMOV             W9, #0x8C8                                             ; +0xf0, 0x5623c\nBL              loc_577E4                                              ; +0xf4, 0x56240\nLDR             X8, [X19,#8]                                           ; +0xf8, 0x56244\nCMP             W21, W22                                               ; +0xfc, 0x56248\nMOV             W9, #0x8C8                                             ; +0x100, 0x5624c\nCSEL            W25, W21, W22, GT                                      ; +0x104, 0x56250\nMOVK            W9, #1,LSL#16                                          ; +0x108, 0x56254\nMUL             W10, W22, W25                                          ; +0x10c, 0x56258\nADRP            X2, #0x2D000                                           ; +0x110, 0x5625c\nADD             X0, X8, X9                                             ; +0x114, 0x56260\nLSL             W1, W10, #2                                            ; +0x118, 0x56264\nBL              loc_57858                                              ; +0x11c, 0x56268\nCBZ             X0, loc_5629C                                          ; +0x120, 0x5626c\nSTRH            W25, [X19,#0x38]                                       ; +0x124, 0x56270\nSTRH            W22, [X19,#0x3A]                                       ; +0x128, 0x56274\nSTR             X0, [X19,#0x40]                                        ; +0x12c, 0x56278\nMOV             X0, X24                                                ; +0x130, 0x5627c\nMOV             X1, X23                                                ; +0x134, 0x56280\nMOV             W2, W22                                                ; +0x138, 0x56284\nMOV             W3, W21                                                ; +0x13c, 0x56288\nMOV             W4, W20                                                ; +0x140, 0x5628c\nBL              sub_B7BB4                                              ; +0x144, 0x56290\nCBNZ            W0, loc_561FC                                          ; +0x148, 0x56294\nB               loc_561F8                                              ; +0x14c, 0x56298\nMOV             W0, #0x26 ; '&'                                        ; +0x150, 0x5629c\nB               loc_561FC                                              ; +0x154, 0x562a0", "xrefs": ["sub_58B74 @ 0x58bac", "sub_5BA6C @ 0x5baa0"], "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"}