Function at 0x5a53a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x748774
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x54
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
push ebx
mov ebx, dword [esp + 0x68]
push esi
xor edx, edx
push edi
mov edi, dword [esp + 0x80]
test di, di
setne dl
cmp di, bx
mov dword [eax], 0
mov dword [ecx], 0
mov dword [esp + 0x28], edx
jne 0x5a53f4
xor edi, edi
mov dword [esp + 0x80], edi
mov eax, dword [esp + 0x74]
push eax
push ebx
call fcn.006590f0
mov ecx, eax
call fcn.00658990
mov esi, eax
test esi, esi
jne 0x5a541e
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x54]
mov dword fs:[0], ecx
add esp, 0x60
ret
push ebp
push ebx
call fcn.00659140
mov ebp, eax
add esp, 4
test ebp, ebp
mov dword [esp + 0x48], ebp
jne 0x5a5447
pop ebp
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x54]
mov dword fs:[0], ecx
add esp, 0x60
ret
mov ecx, dword [esp + 0x78]
push ecx
call fcn.00659140
xor ecx, ecx
add esp, 4
cmp eax, ecx
mov dword [esp + 0x24], eax
je 0x5a5432
cmp di, cx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x44], ecx
je 0x5a5492
push edi
push ebx
call fcn.006590f0
mov ecx, eax
call fcn.00658990
test eax, eax
mov dword [esp + 0x30], eax
je 0x5a5432
push edi
call fcn.00659140
add esp, 4
test eax, eax
mov dword [esp + 0x44], eax
je 0x5a5432
cmp dword [esi + 0x3c], 0
jne 0x5a54a5
push 0x30
call fcn.0040fa60
add esp, 4
mov dword [esi + 0x3c], eax
mov edi, dword [esi + 0x3c]
xor eax, eax
mov ecx, 0xc
rep stosd dword es:[edi], eax
mov edx, dword [esi + 0x3c]
mov cx, word [esp + 0x78]
mov word [edx], bx
mov eax, dword [esi + 0x3c]
mov word [eax + 2], cx
mov ecx, dword [0x912e94]
mov edx, dword [ecx]
call dword [edx + 0x10]
push 5
mov ecx, ebp
mov edi, eax
call fcn.005f3c70
push 0
mov ecx, ebp
mov dword [esp + 0x58], eax
call fcn.005f3c70
push 1
mov ecx, ebp
mov dword [esp + 0x3c], eax
call fcn.005f3c70
push 2
mov ecx, ebp
mov dword [esp + 0x5c], eax
call fcn.005f3c70
push 4
mov ecx, ebp
call fcn.005f3c70
push 6
mov ecx, ebp
mov dword [esp + 0x40], eax
call fcn.005f3c70
push 0xf
mov ecx, ebp
call fcn.005f3c70
push 0x10
mov ecx, ebp
mov dword [esp + 0x64], eax
call fcn.005f3c70
mov dword [esp + 0x40], eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x40]
sub edi, dword [esi + 0x14]
cmp dword [esp + 0x88], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], 0
jne 0x5a559f
cmp dword [esp + 0x2c], 0
jne 0x5a5561
cmp dword [esi + 0x10], 1
jne 0x5a559f
push ebx
call fcn.005a2ac0
add esp, 4
cmp dword [esi + 0x10], 1
mov ecx, eax
mov dword [esp + 0x34], ecx
je 0x5a5584
cmp dword [esp + 0x28], 0
je 0x5a5584
add ecx, 1
mov dword [esp + 0x34], ecx
mov eax, 0x32
cdq
idiv dword [esp + 0x38]
cmp ecx, eax
jle 0x5a559f
mov edx, dword [esi + 0x3c]
sub ecx, eax
lea ecx, [ecx + ecx*4]
add ecx, ecx
add dword [edx + 0x18], ecx
mov edx, dword [0x912e94]
mov ax, word [esp + 0x78]
cmp ax, word [edx + 0x1ac]
mov ebx, 3
jne 0x5a55ec
mov ecx, dword [esp + 0x24]
push 2
call fcn.005f3cb0
test al, al
je 0x5a55d4
mov ecx, dword [esi + 0x3c]
movzx edx, al
lea eax, [edx + edx - 1]
add dword [ecx + 0x18], eax
mov eax, dword [0x914138]
test eax, eax
je 0x5a55ec
cmp byte [eax + 0x360], 0
jne 0x5a55ec
mov eax, dword [esi + 0x3c]
add dword [eax + 0x18], ebx
or edi, 0xffffffff
test byte [0x912ddc], 1
jne 0x5a5647
or dword [0x912ddc], 1
push 0xf
push str.player_threat_min_realms
push 0
mov dword [esp + 0x78], 0
call fcn.00702230
push 0xa
push str.player_threat_min_realms
push 1
mov dword [0x912dd0], eax
call fcn.00702230
push 5
push str.player_threat_min_realms
push 2
mov dword [0x912dd4], eax
call fcn.00702230
add esp, 0x24
mov dword [0x912dd8], eax
mov dword [esp + 0x6c], edi
test byte [0x912ddc], 2
jne 0x5a569f
or dword [0x912ddc], 2
push 0x19
push str.player_threat_max_realms
push 0
mov dword [esp + 0x78], 1
call fcn.00702230
push 0xf
push str.player_threat_max_realms
push 1
mov dword [0x912dc4], eax
call fcn.00702230
push 0xa
push str.player_threat_max_realms
push 2
mov dword [0x912dc8], eax
call fcn.00702230
add esp, 0x24
mov dword [0x912dcc], eax
mov dword [esp + 0x6c], edi
test byte [0x912ddc], 4
jne 0x5a56f7
or dword [0x912ddc], 4
push 0
push str.player_threat_max_militarism
push 0
mov dword [esp + 0x78], 2
call fcn.00702230
push 5
push str.player_threat_max_militarism
push 1
mov dword [0x912db8], eax
call fcn.00702230
push 0xa
push str.player_threat_max_militarism
push 2
mov dword [0x912dbc], eax
call fcn.00702230
add esp, 0x24
mov dword [0x912dc0], eax
mov dword [esp + 0x6c], edi
mov eax, 8
test byte [0x912ddc], al
jne 0x5a574e
or dword [0x912ddc], eax
push 0
push str.player_threat_max_pacifism
push 0
mov dword [esp + 0x78], ebx
call fcn.00702230
push 5
push str.player_threat_max_pacifism
push 1
mov dword [0x912dac], eax
call fcn.00702230
push 0xa
push str.player_threat_max_pacifism
push 2
mov dword [0x912db0], eax
call fcn.00702230
add esp, 0x24
mov dword [0x912db4], eax
mov dword [esp + 0x6c], edi
call fcn.005f4c80
test eax, eax
je 0x5a5872
call fcn.005f4c80
mov edx, dword [0x914138]
lea ecx, [eax + 0x24]
movzx eax, byte [edx + 0x360]
add eax, eax
mov ebx, dword [eax + eax + 0x912dc4]
mov edi, dword [eax + eax + 0x912dd0]
add eax, eax
mov eax, dword [ecx]
call dword [eax + 0x48]
cmp eax, edi
jge 0x5a578f
mov ebx, edi
jmp 0x5a5795
cmp eax, ebx
jg 0x5a5795
mov ebx, eax
mov ecx, dword [0x914138]
movzx eax, byte [ecx + 0x360]
add eax, eax
mov edx, dword [eax + eax + 0x912dc4]
add eax, eax
cmp edx, dword [eax + 0x912dd0]
jle 0x5a5872
mov eax, dword [0x912e94]
mov ax, word [eax + 0x1ac]
cmp word [esp + 0x78], ax
jne 0x5a580c
cmp dword [esp + 0x28], 0
je 0x5a5872
movzx eax, byte [ecx + 0x360]
mov edi, dword [esi + 0x3c]
add eax, eax
mov ecx, dword [eax + eax + 0x912db8]
mov edx, dword [eax + eax + 0x912dc4]
add eax, eax
mov eax, dword [eax + 0x912dd0]
push ecx
push 0
push edx
push eax
push ebx
call fcn.0046f240
add esp, 0x14
sub dword [edi + 0x18], eax
jmp 0x5a5872
cmp dword [esp + 0x28], 0
je 0x5a5872
push eax
mov ecx, ebp
call fcn.005f3680
test eax, eax
jne 0x5a583a
mov ecx, dword [0x912e94]
mov dx, word [ecx + 0x1ac]
mov ecx, dword [esp + 0x24]
push edx
call fcn.005f3680
test eax, eax
je 0x5a5872
mov eax, dword [0x914138]
movzx eax, byte [eax + 0x360]
mov edi, dword [esi + 0x3c]
add eax, eax
mov ecx, dword [eax + eax + 0x912dac]
mov edx, dword [eax + eax + 0x912dc4]
add eax, eax
mov eax, dword [eax + 0x912dd0]
push ecx
push 0
push edx
push eax
push ebx
call fcn.0046f240
add esp, 0x14
add dword [edi + 0x18], eax
call fcn.006590f0
mov ax, word [eax + 0x1c2]
cmp word [esp + 0x74], ax
mov edi, dword [esp + 0x80]
mov dword [esp + 0x5c], eax
jne 0x5a5893
add dword [edi], 0x32
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx + 0x18]
test eax, eax
jle 0x5a58a1
add dword [edi], eax
jmp 0x5a58a7
mov ecx, dword [esp + 0x7c]
sub dword [ecx], eax
mov ebx, dword [esp + 0x88]
xor ecx, ecx
cmp ebx, ecx
jne 0x5a58ec
cmp dword [esp + 0x2c], ecx
jne 0x5a58c0
cmp dword [esi + 0x10], 1
jne 0x5a58ec
mov eax, dword [ebp + 0x274]
cmp eax, ecx
jge 0x5a58ec
imul eax, dword [esp + 0x3c]
mov ecx, eax
mov eax, 0xae147ae1
imul ecx
mov ecx, dword [esi + 0x3c]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
add dword [ecx + 0x14], eax
add dword [edi], eax
xor ecx, ecx
cmp ebx, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], ecx
je 0x5a5973
lea edx, [esp + 0x10]
push edx
lea eax, [esp + 0x18]
push eax
mov eax, dword [0x914298]
lea ecx, [esp + 0x20]
push ecx
mov ecx, dword [eax + 0xdb68]
mov eax, dword [esp + 0x80]
lea edx, [esp + 0x28]
push edx
mov edx, dword [esp + 0x88]
push ecx
push edx
push eax
call fcn.005a4d30
add esp, 0x1c
cmp word [esp + 0x84], 0
je 0x5a5bca
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x18]
push edx
mov edx, dword [0x914298]
lea eax, [esp + 0x20]
push eax
mov eax, dword [edx + 0xdb64]
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x94]
jmp 0x5a5bb8
cmp dword [esp + 0x2c], ecx
je 0x5a5b39
mov eax, dword [esp + 0x84]
cmp ax, cx
mov ebx, dword [esp + 0x74]
je 0x5a59b8
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x20]
push ecx
mov ecx, dword [0x914298]
lea edx, [esp + 0x28]
push edx
mov edx, dword [ecx + 0xdb64]
push edx
push eax
push ebx
call fcn.005a4d30
add esp, 0x1c
mov edi, dword [esp + 0x78]
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x50]
push ecx
push edi
push ebx
push esi
call fcn.005a4c20
lea edx, [esp + 0x24]
push edx
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x34]
push edx
lea ecx, [esp + 0x3c]
push ecx
push eax
push edi
push ebx
call fcn.005a4d30
mov eax, dword [esi + 0x10]
add esp, 0x30
cmp eax, 3
je 0x5a5bca
cmp eax, 1
je 0x5a5bca
cmp dword [esp + 0x4c], 0
je 0x5a5a10
mov eax, dword [esi + 0x3c]
add dword [eax + 0x10], 0x14
mov eax, dword [esp + 0x50]
cmp eax, 0x21
jne 0x5a5a22
mov eax, dword [esi + 0x3c]
add dword [eax + 0x10], 5
jmp 0x5a5a2e
cmp eax, 0x20
jne 0x5a5a2e
mov eax, dword [esi + 0x3c]
add dword [eax + 0x10], 2
mov edi, dword [esi + 0x3c]
mov ecx, dword [edi + 0x10]
imul ecx, dword [esp + 0x54]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x10], eax
cmp dword [esi + 0x14], 0
je 0x5a5ad0
mov ecx, dword [esp + 0x20]
mov edx, dword [0x914298]
cmp ecx, dword [edx + 0xdbe0]
jg 0x5a5ad0
mov edx, dword [esp + 0x78]
lea eax, [esp + 0x54]
push eax
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x54]
push ecx
push edx
push eax
mov ebx, 0x1e
call fcn.005a2be0
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
add esp, 0x10
cmp eax, ecx
jle 0x5a5a98
sub eax, ecx
add eax, ebx
mov ebx, eax
mov ecx, dword [0x914298]
mov eax, dword [ecx + 0xdbdc]
cmp dword [esp + 0x20], eax
jg 0x5a5ab2
mov eax, dword [esi + 0x3c]
add dword [eax + 0x10], ebx
jmp 0x5a5ad0
mov ecx, dword [ecx + 0xdbe0]
mov edx, dword [esp + 0x20]
mov edi, dword [esi + 0x3c]
push 0
push ebx
push ecx
push eax
push edx
call fcn.0046f240
add esp, 0x14
add dword [edi + 0x10], eax
mov ax, word [esp + 0x78]
cmp word [ebp + 0x2b8], ax
jne 0x5a5b17
mov ecx, dword [0x914298]
mov eax, dword [ecx + 0xdbdc]
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jle 0x5a5b17
sub eax, ecx
mov ecx, eax
mov eax, 0x45e7b273
imul ecx
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0xffffffe2
jg 0x5a5b11
mov eax, 0xffffffe2
mov ecx, dword [esi + 0x3c]
add dword [ecx + 0x10], eax
mov dx, word [esp + 0x74]
mov eax, dword [esp + 0x24]
cmp word [eax + 0x2b8], dx
jne 0x5a5bca
mov eax, dword [esi + 0x3c]
add dword [eax + 0x10], 0x1e
jmp 0x5a5bca
cmp dword [esi + 0x10], 1
jne 0x5a5bca
mov eax, dword [0x914298]
mov ecx, dword [eax + 0xdbdc]
cmp dword [esp + 0x20], ecx
jg 0x5a5b69
mov edx, dword [esp + 0x20]
mov eax, edx
shl eax, 4
sub eax, edx
add eax, eax
cdq
idiv ecx
sub eax, 0x1e
jmp 0x5a5b8b
cmp dword [esp + 0x28], 0
jne 0x5a5b91
mov ebx, dword [eax + 0xdbe0]
mov eax, dword [esp + 0x20]
sub eax, ecx
lea eax, [eax + eax*4]
add eax, eax
add eax, eax
cdq
sub ebx, ecx
idiv ebx
add eax, 0xa
mov edi, dword [esi + 0x3c]
add dword [edi + 0x10], eax
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x18]
push edx
mov edx, dword [0x914298]
lea eax, [esp + 0x20]
push eax
mov eax, dword [edx + 0xdb3c]
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
push eax
push ecx
push edx
call fcn.005a4d30
add esp, 0x1c
mov edi, dword [esp + 0x30]
test edi, edi
je 0x5a5c24
cmp dword [edi + 0x10], 4
je 0x5a5be3
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
test eax, eax
je 0x5a5c24
cmp dword [esp + 0x88], 0
je 0x5a5bf5
cmp dword [esi + 0x10], 1
je 0x5a5c0e
jmp 0x5a5c24
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x84]
push ecx
push edx
call fcn.005f4970
add esp, 8
test eax, eax
je 0x5a5c24
mov ecx, dword [edi + 0x10]
mov eax, dword [esi + 0x3c]
sub ecx, 4
neg ecx
sbb ecx, ecx
and ecx, 0xffffffec
add ecx, 0x28
sub dword [eax + 0x10], ecx
mov edx, dword [esi + 0x3c]
mov eax, dword [edx + 0x10]
test eax, eax
mov ebx, dword [esp + 0x80]
jle 0x5a5c39
add dword [ebx], eax
jmp 0x5a5c3f
mov ecx, dword [esp + 0x7c]
sub dword [ecx], eax
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
mov edi, dword [esp + 0x38]
lea ecx, [eax + eax*2]
lea eax, [eax + ecx*8]
add eax, eax
cdq
idiv edi
mov ecx, dword [esp + 0x1c]
sub ecx, dword [esp + 0x18]
imul ecx, edi
mov dword [esp + 0x54], eax
mov eax, 0x51eb851f
imul ecx
mov ecx, dword [esp + 0x54]
sar edx, 4
mov eax, edx
add ecx, edx
shr eax, 0x1f
add eax, ecx
cmp dword [esp + 0x88], 0
mov ecx, dword [esi + 0x3c]
mov dword [ecx + 0x1c], eax
jne 0x5a5c92
cmp dword [esi + 0x10], 1
je 0x5a5c9d
mov eax, dword [esi + 0x3c]
mov edx, dword [eax + 0x1c]
neg edx
mov dword [eax + 0x1c], edx
mov edi, dword [esi + 0x3c]
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x38], ecx
imul ecx, dword [esp + 0x58]
mov eax, 0x68db8bad
imul ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x1c], eax
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx + 0x1c]
cmp eax, 0xfffffff6
jge 0x5a5cd2
mov eax, 0xfffffff6
jmp 0x5a5cdc
cmp eax, 0xa
jle 0x5a5cdc
mov eax, 0xa
mov dword [ecx + 0x1c], eax
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx + 0x1c]
test eax, eax
jge 0x5a5cf1
mov ecx, dword [esp + 0x7c]
sub dword [ecx], eax
jmp 0x5a5cf3
add dword [ebx], eax
mov eax, dword [esi + 0x10]
cmp eax, 4
je 0x5a5d0b
cmp eax, 1
je 0x5a5d22
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x30]
test eax, eax
je 0x5a5d22
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x3c]
sub eax, 4
neg eax
sbb eax, eax
and al, 0xf6
add eax, 0x28
add dword [ecx + 0x10], eax
add dword [ebx], eax
cmp dword [esi + 0x10], 1
je 0x5a5d6a
mov eax, dword [esp + 0x24]
push eax
push ebp
call fcn.005a2b70
mov ecx, dword [esi + 0x3c]
mov dword [ecx + 0x20], eax
mov edi, dword [esi + 0x3c]
mov ecx, dword [edi + 0x20]
imul ecx, dword [esp + 0x44]
mov eax, 0x51eb851f
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x20], eax
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x20]
mov eax, dword [esp + 0x84]
add esp, 8
add dword [eax], edx
cmp dword [ebp + 0x298], 2
jne 0x5a5df0
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x298], 3
jne 0x5a5d87
mov eax, dword [esi + 0x3c]
add dword [eax + 0x2c], 0xfffffff6
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x78]
push edi
push ecx
call fcn.005f4970
add esp, 8
test eax, eax
je 0x5a5da4
mov eax, dword [esi + 0x3c]
add dword [eax + 0x2c], 0xfffffff6
push 0
call fcn.006590f0
mov dx, word [eax + 0x1c4]
push edx
call fcn.00659110
add esp, 8
test eax, eax
je 0x5a5df0
mov cx, word [esp + 0x78]
cmp word [eax + 0x2a], cx
jne 0x5a5df0
cmp cx, di
je 0x5a5df0
push edi
call fcn.00659140
add esp, 4
mov ecx, eax
call fcn.005f3d90
test eax, eax
mov eax, dword [esi + 0x3c]
je 0x5a5dec
add dword [eax + 0x2c], 0xfffffffb
jmp 0x5a5df0
add dword [eax + 0x2c], 0xfffffff6
mov ebp, dword [esp + 0x28]
test ebp, ebp
jne 0x5a5e06
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx + 0x2c]
cdq
sub eax, edx
sar eax, 1
mov dword [ecx + 0x2c], eax
mov edx, dword [esi + 0x3c]
mov eax, dword [edx + 0x2c]
test eax, eax
jle 0x5a5e14
add dword [ebx], eax
jmp 0x5a5e1a
mov ecx, dword [esp + 0x7c]
sub dword [ecx], eax
mov ecx, dword [esi + 0x1c]
mov eax, 0x51eb851f
imul ecx
mov ecx, dword [esi + 0x3c]
sar edx, 5
mov eax, edx
shr eax, 0x1f
xor edi, edi
add eax, edx
cmp ebp, edi
mov dword [ecx + 0xc], eax
mov dword [esp + 0x20], edi
je 0x5a6064
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
push edx
push eax
call fcn.005a4e70
add esp, 8
cmp dword [esp + 0x88], edi
mov ecx, eax
mov dword [esp + 0x20], ecx
je 0x5a5e71
mov eax, 0x2710
cdq
idiv ecx
mov ecx, eax
mov dword [esp + 0x20], ecx
mov eax, 0x2710
cdq
idiv dword [esp + 0x60]
mov ebx, dword [esp + 0x40]
mov ebp, eax
cmp ecx, ebp
jge 0x5a5e89
mov ecx, ebp
jmp 0x5a5e8f
cmp ecx, ebx
jle 0x5a5e93
mov ecx, ebx
mov dword [esp + 0x20], ecx
cmp ecx, 0x64
jge 0x5a5ee7
lea eax, [ecx + ecx*4 - 0x1f4]
add eax, eax
cdq
lea ecx, [ebp - 0x64]
idiv ecx
cmp dword [esp + 0x88], 0
mov edx, dword [esi + 0x3c]
mov dword [edx + 0x24], eax
je 0x5a5ed6
cmp dword [esi + 0x10], 1
je 0x5a5ed6
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x24]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ecx + 0x24], eax
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x24]
mov eax, dword [esp + 0x80]
add dword [eax], edx
jmp 0x5a5f5e
jle 0x5a5f5e
mov eax, 0x64
sub eax, ecx
lea eax, [eax + eax*4]
add eax, eax
cdq
lea ecx, [ebx - 0x64]
idiv ecx
cmp dword [esp + 0x88], 0
mov edx, dword [esi + 0x3c]
mov dword [edx + 0x24], eax
je 0x5a5f2a
cmp dword [esi + 0x10], 1
je 0x5a5f2a
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x24]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ecx + 0x24], eax
mov edi, dword [esi + 0x3c]
mov eax, dword [edi + 0xc]
test eax, eax
jle 0x5a5f52
mov ecx, dword [edi + 0x24]
imul eax, ecx
mov edx, eax
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
mov dword [edi + 0x24], ecx
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x24]
mov eax, dword [esp + 0x7c]
sub dword [eax], edx
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
push eax
push ecx
call fcn.005a5170
add esp, 8
cmp dword [esp + 0x88], 0
mov edi, eax
je 0x5a5f86
mov eax, 0x2710
cdq
idiv edi
mov edi, eax
cmp edi, ebp
jge 0x5a5f8e
mov edi, ebp
jmp 0x5a5f94
cmp edi, ebx
jle 0x5a5f94
mov edi, ebx
cmp edi, 0x64
jge 0x5a5fe9
lea eax, [edi + edi*4 - 0x1f4]
add ebp, 0xffffff9c
cdq
idiv ebp
cmp dword [esp + 0x88], 0
mov edx, dword [esi + 0x3c]
mov dword [edx + 0x28], eax
je 0x5a5fd5
cmp dword [esi + 0x10], 1
je 0x5a5fd5
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x28]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ecx + 0x28], eax
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x28]
mov eax, dword [esp + 0x80]
add dword [eax], edx
jmp 0x5a607a
jle 0x5a607a
mov eax, 0x64
sub eax, edi
lea eax, [eax + eax*4]
add ebx, 0xffffff9c
cdq
idiv ebx
cmp dword [esp + 0x88], 0
mov ecx, dword [esi + 0x3c]
mov dword [ecx + 0x28], eax
je 0x5a602e
cmp dword [esi + 0x10], 1
je 0x5a602e
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x28]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ecx + 0x28], eax
mov ebp, dword [esi + 0x3c]
mov eax, dword [ebp + 0xc]
test eax, eax
jle 0x5a6056
mov ecx, dword [ebp + 0x28]
imul eax, ecx
mov edx, eax
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
mov dword [ebp + 0x28], ecx
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + 0x28]
mov eax, dword [esp + 0x7c]
sub dword [eax], edx
jmp 0x5a607a
cmp dword [esp + 0x88], edi
je 0x5a607a
mov ecx, dword [esp + 0x7c]
mov eax, dword [ecx]
cdq
sub eax, edx
sar eax, 1
mov dword [ecx], eax
mov eax, dword [esp + 0x30]
test eax, eax
je 0x5a60b3
cmp dword [esp + 0x88], 0
jne 0x5a60b3
mov eax, dword [eax + 0x1c]
cdq
mov ebp, dword [esi + 0x3c]
and edx, 3
add eax, edx
sar eax, 2
mov ecx, eax
neg ecx
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add dword [ebp + 0xc], eax
cmp word [esp + 0x84], 0
je 0x5a60d2
cmp dword [esi + 0x10], 1
jne 0x5a60d2
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx + 0xc]
cdq
sub eax, edx
sar eax, 1
mov dword [ecx + 0xc], eax
mov ebx, dword [esi + 0x3c]
mov ebp, dword [ebx + 0xc]
test ebp, ebp
mov eax, 0x66666667
jge 0x5a60eb
mov ecx, dword [esp + 0x7c]
mov ecx, dword [ecx]
sub ecx, ebp
jmp 0x5a60f6
mov ecx, dword [esp + 0x80]
mov ecx, dword [ecx]
add ecx, ebp
imul ecx, ebp
add ecx, ecx
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, ebp
cmp dword [esp + 0x2c], 0
mov dword [ebx + 0xc], eax
je 0x5a612e
cmp dword [esp + 0x28], 0
jne 0x5a612e
mov ecx, dword [esi + 0x3c]
cmp dword [ecx + 0xc], 0
je 0x5a612e
mov eax, dword [ecx + 0xc]
cdq
sub eax, edx
sar eax, 1
mov dword [ecx + 0xc], eax
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx + 0xc]
test eax, eax
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x7c]
jge 0x5a6147
sub dword [edx], eax
jmp 0x5a6149
add dword [ecx], eax
cmp dword [0x912da8], 0
mov eax, dword [esi + 0x3c]
mov ebx, dword [edx]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x3c]
mov ebx, dword [ecx]
mov dword [eax + 8], ebx
je 0x5a62ac
mov ebx, dword [esp + 0x44]
test ebx, ebx
mov eax, dword [esi + 0x3c]
je 0x5a6228
mov ebp, dword [esp + 0x20]
push ebp
mov ebp, dword [eax + 0x24]
push ebp
push edi
mov edi, dword [eax + 0x28]
push edi
mov edi, dword [eax + 0x20]
push edi
mov edi, dword [eax + 0x2c]
push edi
mov edi, dword [esp + 0x28]
push edi
mov edi, dword [esp + 0x30]
push edi
mov edi, dword [esp + 0x38]
push edi
mov edi, dword [esp + 0x40]
push edi
mov edi, dword [esp + 0x60]
push edi
mov edi, dword [eax + 0x1c]
push edi
mov edi, dword [esp + 0x64]
push edi
mov edi, dword [eax + 0x18]
push edi
mov edi, dword [eax + 0x14]
mov ecx, dword [ecx]
push edi
mov edi, dword [esi + 0x10]
mov edx, dword [edx]
push edi
mov edi, dword [eax + 0x10]
mov eax, dword [eax + 0xc]
push edi
mov edi, dword [esp + 0x74]
mov edi, dword [edi + 0x1c]
push edi
mov edi, dword [esi + 0x1c]
push edi
push eax
push ecx
mov ecx, dword [esp + 0x78]
movzx eax, word [ecx + 0x20]
push edx
push eax
call fcn.005f65c0
mov ecx, dword [esp + 0xa4]
movzx edx, word [ecx + 0x20]
push eax
push edx
call fcn.005f65c0
push eax
movzx eax, word [ebx + 0x20]
push eax
mov ecx, ebx
call fcn.005f65c0
push eax
mov eax, dword [esp + 0xf8]
neg eax
sbb eax, eax
and eax, 6
add eax, 0x4a
movzx ecx, ax
push ecx
push str._c___s__d__:__s__d______s__d_:_WP_PP:__d__d__rel:__d__d__d___sta:__d__d___rr:__d__pac:__d__d___dip:__d__d:__d__d___d___d_____rlg:__d__nos:__d__cst:__d__d___str:__d__d__n
call fcn.0040ea10
add esp, 0x78
jmp 0x5a62ac
mov ebx, dword [esp + 0x20]
push ebx
mov ebx, dword [eax + 0x24]
push ebx
push edi
mov edi, dword [eax + 0x28]
push edi
mov edi, dword [eax + 0x20]
push edi
mov edi, dword [eax + 0x2c]
push edi
mov edi, dword [esp + 0x28]
push edi
mov edi, dword [esp + 0x30]
push edi
mov edi, dword [esp + 0x38]
push edi
mov edi, dword [esp + 0x40]
push edi
mov edi, dword [esp + 0x60]
push edi
mov edi, dword [eax + 0x1c]
push edi
mov edi, dword [esp + 0x64]
mov ecx, dword [ecx]
push edi
mov edi, dword [eax + 0x18]
mov edx, dword [edx]
push edi
mov edi, dword [eax + 0x14]
push edi
mov edi, dword [esi + 0x10]
push edi
mov edi, dword [eax + 0x10]
mov eax, dword [eax + 0xc]
push edi
mov edi, dword [esi + 0x1c]
push edi
push eax
push ecx
mov ecx, dword [esp + 0x74]
movzx eax, word [ecx + 0x20]
push edx
push eax
call fcn.005f65c0
mov ecx, dword [esp + 0xa0]
movzx edx, word [ecx + 0x20]
push eax
push edx
call fcn.005f65c0
push eax
push str._s__d______s__d_:_WP_PP:__d__d__rel:__d__d___sta:__d__d___rr:__d__pac:__d__d___dip:__d__d:__d__d___d___d_____rlg:__d__nos:__d__cst:__d__d___str:__d__d__n
call fcn.0040ea10
add esp, 0x68
mov eax, dword [esi + 0x3c]
mov ecx, dword [esp + 0x64]
pop ebp
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x60
ret