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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xcc
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xb8], edx
test eax, eax
je 0x5fd2cf
mov ecx, dword [esp + 0xe0]
cmp dword [ecx + 0x20], 3
je 0x5fcf3b
mov ebp, dword [esp + 0xb8]
mov edi, dword [ebp + 8]
mov dword [esp + 0x58], edi
mov ebx, dword [esp + 0x58]
mov dword [esp + 0xb4], 0
mov edx, dword [ebx + 0x108]
test edx, edx
mov dword [esp + 0xb0], edx
setne cl
xor eax, eax
cmp dword [esp + 0xe0], 0
setne al
test eax, ecx
je 0x5fc387
mov edi, dword [esp + 0xe0]
mov esi, 1
cmp dword [edi + 0x20], 3
cmove esi, dword [esp + 0xb4]
mov dword [esp + 0xb4], esi
mov ecx, dword [esp + 0xe4]
mov ebp, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ebp
mov eax, dword [esp + 0x2c]
xor eax, 0x80000000
or eax, ebp
je 0x5fc3c5
mov ebx, dword [esp + 0xe4]
mov edi, dword [ebx + 0xc]
mov esi, dword [ebx + 8]
mov edx, edi
xor edx, 0x80000000
or edx, esi
jne 0x5fc916
cmp dword [esp + 0xb0], 1
je 0x5fcc46
mov esi, dword [esp + 0xe4]
mov ecx, dword [esi + 0x20]
test ecx, ecx
jne 0x5fc491
mov edi, dword [esp + 0x58]
lea ebp, [esp + 0xc4]
mov eax, dword [edi + 0xdc]
test eax, eax
je 0x5fc85f
sub eax, 1
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0
je 0x5fd158
mov esi, dword [esp + 0xc0]
test esi, esi
je 0x5fc491
mov ecx, dword [esp + 0xc4]
test ecx, ecx
je 0x5fc491
mov ebx, dword [esp + 0xb8]
mov eax, esi
imul dword [ebx + 0x38]
mov edi, eax
mov eax, ecx
mov ebp, edx
imul dword [ebx + 0x3c]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], ebp
mov ecx, eax
mov dword [esp + 0xc], edx
mov dword [esp], 1
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
call fcn.00960e29
mov edx, dword [esp + 0xe4]
test eax, eax
mov dword [edx + 0x20], eax
je 0x5fc491
mov edx, dword [esp + 0xbc]
mov ebp, dword [edx + 0xe9c]
test ebp, ebp
jne 0x5fd542
mov ebp, dword [esp + 0xe0]
test ebp, ebp
je 0x5fd2b5
mov edi, dword [esp + 0xb8]
cmp dword [edi + 0x64], 3
je 0x5fce80
mov ecx, dword [esp + 0xe4]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
mov ebp, dword [esp + 0xe0]
test ebp, ebp
je 0x5fc704
mov eax, dword [esp + 0xe0]
mov ebp, dword [eax + 0xf0]
test ebp, ebp
js 0x5fc704
mov edi, dword [esp + 0xb8]
mov ecx, dword [esp + 0x58]
mov esi, dword [edi + 0x38]
mov eax, dword [ecx + 0x24]
imul esi
test edx, edx
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
jl 0x5fc704
jle 0x5fd3d3
mov eax, dword [esp + 0xb8]
mov esi, dword [esp + 0x58]
mov ebx, dword [eax + 0x3c]
mov eax, dword [esi + 0x20]
imul ebx
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x98], eax
xor edx, 0x80000000
or edx, dword [esp + 0x48]
jne 0x5fcf51
mov ecx, dword [esp + 0xb8]
mov edx, dword [ecx + 0x1c4]
mov ebx, dword [ecx + 0x1c0]
mov dword [esp + 0x94], edx
mov dword [esp + 0x90], ebx
mov esi, dword [esp + 0x94]
xor esi, 0x80000000
or esi, dword [esp + 0x90]
je 0x5fc6d0
mov ebx, dword [esp + 0xe0]
mov eax, dword [esp + 0x98]
mov edi, dword [esp + 0x9c]
mov edx, dword [ebx + 0xf4]
mov ebx, dword [esp + 0x98]
mov esi, dword [esp + 0xa4]
mov dword [esp + 0x38], edx
mov ecx, edx
mov dword [esp + 0xc], esi
mul dword [esp + 0x38]
sar ecx, 0x1f
imul edi, dword [esp + 0x38]
mov dword [esp + 0x3c], ecx
mov ecx, eax
mov eax, edx
imul ebx, dword [esp + 0x3c]
add eax, edi
mov edx, dword [esp + 0xa0]
lea edi, [eax + ebx]
mov dword [esp], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], edi
call fcn.00a51f28
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x8c], edx
add dword [esp + 0x88], eax
mov edi, dword [esp + 0xe0]
mov esi, dword [esp + 0xe4]
adc dword [esp + 0x8c], ecx
mov eax, dword [edi + 0xf8]
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x8c]
mov ecx, eax
mov eax, dword [esp + 0x98]
mov dword [esi + 0xc], edx
mov dword [esi + 8], ebx
mul dword [esp + 0x38]
sar ecx, 0x1f
mov edi, dword [esp + 0x98]
mov ebx, edx
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x3c], ecx
imul edx, dword [esp + 0x38]
mov esi, ebx
imul edi, dword [esp + 0x3c]
add esi, edx
mov ecx, eax
mov edx, dword [esp + 0xa4]
lea ebx, [esi + edi]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.00a51f28
mov esi, dword [esp + 0xe4]
mov edi, dword [esp + 0x88]
add eax, dword [esp + 0x88]
mov dword [esp + 0x48], edi
adc edx, dword [esp + 0x8c]
mov dword [esi], eax
mov eax, dword [esp + 0x8c]
mov dword [esi + 4], edx
mov dword [esp + 0x4c], eax
test ebp, ebp
jle 0x5fc704
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0xb8]
mov dword [esi + 0x1c0], edx
mov dword [esi + 0x1c4], ecx
mov edi, dword [esp + 0xe4]
mov eax, dword [edi + 8]
mov ebp, dword [edi + 0xc]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ebp
mov edi, dword [esp + 0x4c]
xor edi, 0x80000000
or edi, dword [esp + 0x48]
je 0x5fcc20
mov edx, dword [esp + 0xe4]
mov ebx, dword [edx + 4]
mov esi, dword [edx]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x40], esi
mov ecx, dword [esp + 0x44]
xor ecx, 0x80000000
or ecx, esi
je 0x5fc746
mov ebp, dword [esp + 0x4c]
cmp ebx, ebp
jge 0x5fd10f
mov ecx, dword [esp + 0xb0]
test ecx, ecx
je 0x5fc771
cmp dword [esp + 0xb0], 1
sete dl
xor ebx, ebx
cmp dword [esp + 0xe0], 0
setne bl
test ebx, edx
je 0x5fca51
mov ebp, dword [esp + 0x58]
cmp dword [ebp + 0xe0], 0x1c
je 0x5fca51
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x5fccdf
mov edi, dword [esp + 0x4c]
xor edi, 0x80000000
or edi, dword [esp + 0x48]
je 0x5fd09e
mov esi, dword [esp + 0xe4]
mov ebp, dword [esp + 0xbc]
mov edi, dword [esp + 0xbc]
mov edx, dword [esi + 0x18]
mov esi, dword [ebp + edx*4 + 0x18]
mov ebp, dword [edi + 0xe9c]
mov edi, dword [esp + 0x4c]
mov ebx, dword [esi + 0x1c]
mov eax, dword [esi + 0x18]
mov dword [esp + 0x84], edx
xor ebx, 0x80000000
mov edx, dword [esp + 0x48]
mov dword [esp + 0x80], esi
or eax, ebx
setne bl
xor edi, 0x80000000
or edx, edi
sete al
or eax, ebx
test al, 1
jne 0x5fc9a8
mov ecx, dword [esi + 0x74]
mov edx, dword [esi + 0x70]
mov ebx, ecx
xor ebx, 0x80000000
or ebx, edx
je 0x5fc9a8
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
sub esi, edx
mov edx, dword [esp + 0x48]
sbb edi, ecx
mov eax, esi
mov esi, dword [esp + 0x80]
mov dword [esi + 0x1c], edi
mov edi, dword [esp + 0x4c]
mov dword [esi + 0x18], eax
mov dword [esi + 0x70], edx
mov dword [esi + 0x74], edi
test ebp, ebp
je 0x5fc96c
mov ecx, dword [esp + 0x84]
cmp dword [ebp + 0x18], ecx
je 0x5fd0cb
mov ebp, dword [ebp + 0x40]
jmp 0x5fc842
mov esi, dword [esp + 0xb8]
mov ecx, 0x3e8
mov edi, dword [esi + 0x38]
mov eax, edi
imul ecx
mov ecx, eax
mov eax, dword [esp + 0xb8]
mov ebx, edx
mov esi, dword [eax + 0x3c]
mov eax, esi
cdq
cmp ebx, edx
jl 0x5fc895
jg 0x5fd1a4
cmp ecx, esi
ja 0x5fd1a4
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0
mov eax, dword [esp + 0x58]
mov esi, dword [eax + 0x20]
mov ecx, 0x3e8
mov ebx, dword [esp + 0x58]
mov eax, esi
imul ecx
mov ecx, eax
mov eax, dword [ebx + 0x24]
mov edi, edx
cdq
cmp edi, edx
jl 0x5fc41d
jle 0x5fd493
mov dword [ebp], esi
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0xe0]
mov edi, dword [ebx + 0x24]
test edx, edx
mov dword [esp + 0xc0], edi
je 0x5fc41d
mov ecx, dword [esp + 0xe0]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x5fc41d
add eax, 1
imul esi, eax
mov dword [ebp], esi
jmp 0x5fc41d
cmp edi, ecx
jl 0x5fc3c5
jg 0x5fc92a
cmp esi, dword [esp + 0x28]
jbe 0x5fc3c5
mov eax, dword [esp + 0xb8]
mov ebp, dword [eax + 0x40]
cmp ebp, 0x3e
jg 0x5fc3c5
mov ecx, ebp
mov eax, 1
xor edx, edx
shld edx, eax, cl
xor ebx, ebx
shl eax, cl
and cl, 0x20
mov ebp, dword [esp + 0xe4]
cmovne edx, eax
cmovne eax, ebx
sub esi, eax
sbb edi, edx
mov dword [ebp + 8], esi
mov dword [ebp + 0xc], edi
jmp 0x5fc3c5
mov ebx, dword [esp + 0x80]
mov ebp, dword [ebx + 0x54]
xor ebp, 0x80000000
or ebp, dword [ebx + 0x50]
jne 0x5fd528
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0xe4]
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x54], edx
mov ecx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], edi
mov esi, dword [esp + 0x4c]
xor esi, 0x80000000
or esi, dword [esp + 0x48]
jne 0x5fc9da
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xe4]
mov edx, dword [ebx + 0x70]
mov ebp, dword [ebx + 0x74]
mov dword [eax + 0xc], ebp
mov dword [eax + 8], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], ebp
mov esi, dword [esp + 0xb8]
mov edx, dword [esi + 0x78]
test edx, edx
jne 0x5fc9f5
mov edi, dword [esp + 0xe4]
mov edx, dword [edi + 0x20]
mov dword [esi + 0x78], edx
mov ecx, dword [esp + 0x4c]
xor ecx, 0x80000000
or ecx, dword [esp + 0x48]
je 0x5fca1d
mov eax, edx
mov esi, dword [esp + 0xb8]
cdq
add eax, dword [esp + 0x48]
adc edx, dword [esp + 0x4c]
mov dword [esi + 0x70], eax
mov dword [esi + 0x74], edx
mov ebp, dword [esp + 0xe4]
mov esi, dword [esp + 0xb8]
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov ebx, dword [ebp + 0x20]
mov dword [esi + 0x80], eax
mov dword [esi + 0x84], edx
mov dword [esi + 0x78], ebx
mov ebx, dword [ebp]
mov ebp, dword [ebp + 4]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebp
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
xor edi, 0x80000000
or esi, edi
setne cl
xor ebx, ebx
cmp dword [esp + 0xb0], 0x10
setle bl
test ebx, ecx
je 0x5fcb89
xor ecx, ecx
mov esi, dword [esp + 0xb8]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
cmp ecx, dword [esp + 0xb0]
mov dword [esi + 0xe0], edx
mov dword [esi + 0xe4], ebp
jge 0x5fcb18
mov edx, dword [esi + 0xec]
mov eax, dword [esi + 0xe8]
cmp dword [esp + 0x44], edx
jl 0x5fcb18
jle 0x5fd149
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0xb8]
mov dword [ebx + ecx*8 + 0xe8], eax
mov dword [ebx + ecx*8 + 0xec], edx
mov dword [ebx + ecx*8 + 0xe0], esi
mov dword [ebx + ecx*8 + 0xe4], edi
add ecx, 1
cmp ecx, dword [esp + 0xb0]
jge 0x5fcb18
mov edx, dword [ebx + ecx*8 + 0xe4]
mov edi, dword [ebx + ecx*8 + 0xec]
mov eax, dword [ebx + ecx*8 + 0xe0]
cmp edx, edi
mov esi, dword [ebx + ecx*8 + 0xe8]
jl 0x5fcb18
jg 0x5fcac3
cmp eax, esi
ja 0x5fcac3
mov ecx, dword [esp + 0xe4]
mov esi, dword [ecx + 0xc]
mov ebx, dword [ecx + 8]
mov eax, esi
xor eax, 0x80000000
or eax, ebx
jne 0x5fcb54
mov ebx, dword [esp + 0xb8]
mov edx, dword [esp + 0xe4]
mov esi, dword [ebx + 0xe0]
mov ebp, dword [ebx + 0xe4]
mov dword [edx + 0xc], ebp
mov dword [edx + 8], esi
mov ebx, esi
mov esi, ebp
mov edi, dword [esp + 0x58]
cmp dword [edi + 0xe0], 0x1c
je 0x5fd2ee
mov edi, dword [esp + 0xb8]
mov ebp, dword [edi + 0x74]
mov eax, dword [edi + 0x70]
cmp esi, ebp
jl 0x5fcb89
jg 0x5fcb7c
cmp ebx, eax
jbe 0x5fcb89
mov ecx, dword [esp + 0xb8]
mov dword [ecx + 0x70], ebx
mov dword [ecx + 0x74], esi
mov edx, dword [esp + 0x58]
mov eax, dword [edx + 0xdc]
cmp eax, 1
je 0x5fcc39
test eax, eax
jne 0x5fcbb2
mov eax, dword [edx + 0xe0]
sub eax, 8
cmp eax, 0x5f
jbe 0x5fd06c
mov esi, dword [esp + 0xe0]
test esi, esi
je 0x5fcc15
mov ebx, dword [esp + 0xe4]
mov edx, dword [esp + 0xe0]
mov dword [ebx + 0x1c], 0
mov eax, dword [edx + 0xe0]
cmp eax, 1
je 0x5fd2e2
add eax, 1
je 0x5fd3af
mov edi, dword [esp + 0xe0]
test edi, edi
je 0x5fcc15
mov edx, dword [esp + 0xe0]
mov ecx, dword [esp + 0xe4]
mov esi, dword [edx + 0xe8]
mov ebx, dword [edx + 0xec]
mov dword [ecx + 0x3c], ebx
mov dword [ecx + 0x38], esi
add esp, 0xcc
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [esp + 0xe4]
mov edi, dword [esi]
mov eax, dword [esi + 4]
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], eax
jmp 0x5fc746
mov ebx, dword [esp + 0xe4]
or dword [ebx + 0x1c], 1
jmp 0x5fcbea
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x28]
mov esi, dword [eax + 8]
mov edi, dword [eax + 0xc]
xor edx, edi
xor ebp, esi
or edx, ebp
jne 0x5fc3d3
mov ebp, esi
mov esi, edi
xor esi, 0x80000000
or ebp, esi
setne bl
xor ecx, ecx
cmp dword [esp + 0xb4], 0
setne cl
test ecx, ebx
je 0x5fc3d3
mov ebx, dword [esp + 0xbc]
mov dword [esp + 8], 0xc7e881
mov dword [esp + 4], 0x18
mov dword [esp], ebx
call fcn.00961b69
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xe4]
mov edi, dword [edx + 8]
mov dword [eax], 0
mov dword [eax + 4], 0x80000000
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0x80000000
mov dword [esp + 0x58], edi
jmp 0x5fc3d3
mov edi, dword [esp + 0x44]
xor edi, 0x80000000
or edi, dword [esp + 0x40]
je 0x5fd073
mov eax, dword [esp + 0x44]
xor eax, 0x80000000
or eax, dword [esp + 0x40]
je 0x5fcda6
mov ebx, dword [esp + 0xe4]
mov ebp, dword [ebx + 0x20]
test ebp, ebp
je 0x5fcda6
mov ecx, dword [esp + 0xb8]
mov edi, ebp
mov dword [esp + 0x78], ebp
sar edi, 0x1f
mov esi, dword [ecx + 0x70]
mov dword [esp + 0x7c], edi
mov edi, dword [ecx + 0x74]
mov ecx, esi
sub ecx, dword [esp + 0x78]
mov ebx, edi
sbb ebx, dword [esp + 0x7c]
mov eax, ecx
sub eax, dword [esp + 0x40]
mov edx, ebx
sbb edx, dword [esp + 0x44]
test edx, edx
js 0x5fd60f
mov ecx, esi
mov ebx, edi
sub ecx, dword [esp + 0x40]
sbb ebx, dword [esp + 0x44]
test ebx, ebx
js 0x5fd7e1
cmp edx, ebx
jg 0x5fcda6
jl 0x5fcd70
cmp eax, ecx
jae 0x5fcda6
sar ebp, 3
mov esi, ebp
sar esi, 0x1f
cmp esi, edx
jl 0x5fcda6
jg 0x5fcd82
cmp ebp, eax
jbe 0x5fcda6
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov eax, dword [esp + 0xe4]
add edx, dword [esp + 0x78]
adc ebp, dword [esp + 0x7c]
mov dword [eax], edx
mov dword [esp + 0x40], edx
mov dword [eax + 4], ebp
mov dword [esp + 0x44], ebp
mov ebx, dword [esp + 0x44]
xor ebx, 0x80000000
or ebx, dword [esp + 0x40]
jne 0x5fcdd2
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0xe4]
mov dword [ecx], esi
mov dword [ecx + 4], edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], edi
mov esi, dword [esp + 0xe4]
mov ebp, dword [esp + 0xbc]
mov edx, dword [esp + 0xbc]
mov edi, dword [esi + 0x18]
mov esi, dword [ebp + edi*4 + 0x18]
mov ebp, dword [edx + 0xe9c]
mov edx, dword [esp + 0x44]
mov ebx, dword [esi + 0x1c]
mov eax, dword [esi + 0x18]
mov dword [esp + 0x74], edi
xor ebx, 0x80000000
mov edi, dword [esp + 0x40]
mov dword [esp + 0x70], esi
or eax, ebx
setne bl
xor edx, 0x80000000
or edi, edx
sete al
or eax, ebx
test al, 1
jne 0x5fd230
mov ecx, dword [esi + 0x74]
mov edx, dword [esi + 0x70]
mov ebx, ecx
xor ebx, 0x80000000
or ebx, edx
je 0x5fd230
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
sub esi, edx
mov edx, dword [esp + 0x44]
sbb edi, ecx
mov eax, esi
mov esi, dword [esp + 0x70]
mov dword [esi + 0x1c], edi
mov edi, dword [esp + 0x40]
mov dword [esi + 0x18], eax
mov dword [esi + 0x70], edi
mov dword [esi + 0x74], edx
test ebp, ebp
je 0x5fd1f8
mov ecx, dword [esp + 0x74]
cmp dword [ebp + 0x18], ecx
je 0x5fd1b7
mov ebp, dword [ebp + 0x40]
jmp 0x5fce66
mov eax, dword [esp + 0xe4]
mov edx, dword [eax + 0x14]
test edx, edx
je 0x5fd12f
mov edi, dword [eax + 0x20]
mov eax, edx
mov ecx, dword [esp + 0xe0]
mov ebp, edi
sar eax, 0x1f
mov dword [esp + 8], edi
sar ebp, 0x1f
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ebp
mov esi, dword [ecx + 0xb8]
mov ebx, dword [ecx + 0xbc]
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.00960e29
mov esi, eax
mov eax, dword [esp + 0xe4]
mov edi, edx
mov ebx, dword [eax + 4]
mov ecx, dword [eax]
mov edx, ebx
xor edx, 0x80000000
or edx, ecx
je 0x5fcefa
add ecx, esi
mov edx, dword [esp + 0xe4]
adc ebx, edi
mov dword [edx], ecx
mov dword [edx + 4], ebx
mov eax, dword [esp + 0xe4]
mov ebx, dword [eax + 0xc]
mov ecx, dword [eax + 8]
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x48], ecx
mov ebp, dword [esp + 0x4c]
xor ebp, 0x80000000
or ebp, ecx
je 0x5fc4c6
mov eax, esi
mov edx, edi
mov esi, dword [esp + 0xe4]
add eax, ecx
adc edx, ebx
mov dword [esi + 8], eax
mov dword [esi + 0xc], edx
jmp 0x5fc4be
mov edx, dword [edx + 8]
mov dword [esp + 0x58], edx
mov dword [edx + 0x108], 1
jmp 0x5fc336
mov edi, dword [esp + 0xe0]
mov eax, dword [edi + 0xf4]
mov edi, dword [esp + 0x98]
mov dword [esp + 0x38], eax
mov ecx, eax
mov eax, dword [esp + 0x98]
mul dword [esp + 0x38]
sar ecx, 0x1f
mov ebx, edx
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x3c], ecx
imul edx, dword [esp + 0x38]
mov esi, ebx
imul edi, dword [esp + 0x3c]
add esi, edx
mov ecx, eax
mov edx, dword [esp + 0xa4]
lea ebx, [esi + edi]
mov eax, dword [esp + 0xa0]
mov dword [esp], ecx
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
call fcn.00a51f28
mov ecx, dword [esp + 0xe0]
mov ebx, dword [esp + 0xb8]
sub dword [esp + 0x48], eax
mov eax, dword [ecx + 0xf8]
sbb dword [esp + 0x4c], edx
mov dword [esp + 0x38], eax
cdq
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x98]
mov esi, dword [esp + 0x4c]
mov dword [ebx + 0x1c0], edi
mov dword [esp + 0x3c], edx
mov edi, dword [esp + 0x9c]
mul dword [esp + 0x38]
mov dword [ebx + 0x1c4], esi
imul edi, dword [esp + 0x38]
mov esi, edx
mov ebx, dword [esp + 0x98]
mov ecx, eax
add esi, edi
imul ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0xa0]
lea edi, [esi + ebx]
mov edx, dword [esp + 0xa4]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
call fcn.00a51f28
mov ebx, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe4]
mov esi, dword [ebx + 8]
mov edi, dword [ebx + 0xc]
add eax, esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], edi
adc edx, edi
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x5fc6d0
jmp dword [eax*4 + 0xc7e8a0]
mov ecx, dword [esp + 0x4c]
xor ecx, 0x80000000
or ecx, dword [esp + 0x48]
jne 0x5fccf3
mov edx, dword [esp + 0xe4]
mov esi, dword [edx + 0x20]
test esi, esi
je 0x5fca51
jmp 0x5fccf3
mov ecx, dword [esp + 0xb8]
mov esi, dword [esp + 0xe4]
mov ebx, dword [ecx + 0x80]
mov edx, dword [ecx + 0x84]
mov dword [esi + 0xc], edx
mov dword [esi + 8], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], edx
jmp 0x5fc7a5
mov edi, dword [ebp + 4]
mov esi, dword [ebp]
mov edx, edi
xor edx, 0x80000000
or edx, esi
je 0x5fd3e1
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov edx, edi
mov eax, esi
xor edx, ebx
xor eax, ecx
or edx, eax
jne 0x5fd3e7
mov eax, dword [esp + 0x80]
add esi, dword [eax + 0x18]
adc edi, dword [eax + 0x1c]
mov dword [ebp], esi
mov dword [ebp + 4], edi
jmp 0x5fd3e7
jg 0x5fd11f
mov ebx, dword [esp + 0x48]
cmp dword [esp + 0x40], ebx
jbe 0x5fc746
mov dword [esp + 0xb4], 1
jmp 0x5fc746
mov ebx, dword [esp + 0xe4]
mov edx, dword [ebx + 8]
mov edi, dword [ebx + 0xc]
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], edi
jmp 0x5fc4c6
cmp dword [esp + 0x40], eax
ja 0x5fcab7
jmp 0x5fcb18
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0xe4]
mov edx, dword [eax + 0xe0]
mov ebx, dword [esi + 0x14]
cmp edx, 0x15005
je 0x5fc41d
mov eax, dword [eax + 0x4c]
cmp eax, 1
jle 0x5fd620
test eax, eax
js 0x5fc41d
mov dword [ebp], eax
mov ebx, dword [esp + 0x58]
mov ebp, dword [ebx + 0x40]
mov dword [esp + 0xc0], ebp
jmp 0x5fc41d
mov dword [esp + 0xc4], edi
mov dword [esp + 0xc0], esi
jmp 0x5fc41d
mov edi, dword [ebp + 4]
mov esi, dword [ebp]
mov edx, edi
xor edx, 0x80000000
or edx, esi
je 0x5fd43d
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov edx, edi
mov eax, esi
xor edx, ebx
xor eax, ecx
or edx, eax
jne 0x5fd443
mov eax, dword [esp + 0x70]
add esi, dword [eax + 0x18]
adc edi, dword [eax + 0x1c]
mov dword [ebp], esi
mov dword [ebp + 4], edi
jmp 0x5fd443
mov ebx, dword [esp + 0x70]
mov ebp, dword [ebx + 0x54]
xor ebp, 0x80000000
or ebp, dword [ebx + 0x50]
jne 0x5fd5f6
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0xe4]
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x54], edx
mov ecx, dword [esi]
mov edi, dword [esi + 4]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], edi
mov esi, dword [esp + 0x44]
xor esi, 0x80000000
or esi, dword [esp + 0x40]
jne 0x5fd261
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xe4]
mov edx, dword [ebx + 0x70]
mov ebp, dword [ebx + 0x74]
mov dword [eax + 4], ebp
mov dword [eax], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], ebp
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0xe4]
mov ebp, dword [esp + 0x40]
xor edi, 0x80000000
mov esi, dword [esp + 0x44]
mov dword [ecx + 8], ebp
or edi, dword [esp + 0x40]
mov dword [ecx + 0xc], esi
je 0x5fca51
mov eax, dword [ecx + 0x20]
mov ebx, dword [esp + 0xb8]
cdq
add eax, dword [esp + 0x40]
adc edx, dword [esp + 0x44]
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x74], edx
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
jmp 0x5fca51
mov eax, dword [esp + 0xe4]
mov ebp, dword [eax + 8]
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x4c], ebx
jmp 0x5fc704
mov esi, dword [esp + 0xb8]
mov ebx, dword [esi + 8]
mov dword [esp + 0x58], ebx
jmp 0x5fc336
mov dword [ebx + 0x1c], 1
jmp 0x5fcbea
mov ebp, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe4]
mov edi, dword [ebp + 0x18]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [esp + 0x6c], edi
mov edi, dword [esp + 0xbc]
mov dword [esp + 0x64], edx
mov ebp, dword [esp + 0x6c]
mov dword [esp + 0x60], eax
mov ecx, dword [edi + ebp*4 + 0x18]
mov ebp, dword [edi + 0xe9c]
mov edi, ebx
mov edx, dword [ecx + 0x1c]
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x5c], ecx
xor edx, 0x80000000
or eax, edx
mov edx, esi
setne cl
xor edx, 0x80000000
or edi, edx
sete al
or eax, ecx
test al, 1
jne 0x5fcb65
mov edi, dword [esp + 0x5c]
mov ecx, dword [edi + 0x74]
mov eax, dword [edi + 0x70]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x34]
xor edx, 0x80000000
or edx, dword [esp + 0x30]
je 0x5fcb65
mov eax, ebx
mov edx, esi
mov ecx, dword [esp + 0x5c]
sub eax, dword [esp + 0x30]
mov dword [ecx + 0x70], ebx
mov dword [ecx + 0x74], esi
sbb edx, dword [esp + 0x34]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x1c], edx
test ebp, ebp
je 0x5fd663
mov esi, dword [esp + 0x6c]
cmp dword [ebp + 0x18], esi
je 0x5fd4a0
mov ebp, dword [ebp + 0x40]
jmp 0x5fd395
mov eax, dword [esp + 0xe0]
cmp dword [eax + 0x20], 1
jne 0x5fcbea
mov ebp, dword [esp + 0xe4]
mov dword [ebp + 0x1c], 1
jmp 0x5fcbea
cmp eax, 0
jbe 0x5fc704
jmp 0x5fc519
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov edx, ebx
xor edx, 0x80000000
or edx, ecx
je 0x5fd406
mov eax, dword [esp + 0x80]
add ecx, dword [eax + 0x18]
adc ebx, dword [eax + 0x1c]
mov dword [ebp + 8], ecx
mov dword [ebp + 0xc], ebx
mov ecx, dword [esp + 0x80]
mov ebx, dword [ecx + 0x54]
xor ebx, 0x80000000
or ebx, dword [ecx + 0x50]
jne 0x5fc85a
mov edx, edi
xor edx, 0x80000000
or edx, esi
je 0x5fc85a
mov ebp, dword [ebp + 0x40]
mov dword [ecx + 0x50], esi
mov dword [ecx + 0x54], edi
jmp 0x5fc842
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov edx, ebx
xor edx, 0x80000000
or edx, ecx
je 0x5fd45f
mov eax, dword [esp + 0x70]
add ecx, dword [eax + 0x18]
adc ebx, dword [eax + 0x1c]
mov dword [ebp + 8], ecx
mov dword [ebp + 0xc], ebx
mov ecx, dword [esp + 0x70]
mov ebx, dword [ecx + 0x54]
xor ebx, 0x80000000
or ebx, dword [ecx + 0x50]
jne 0x5fce7b
mov edx, edi
xor edx, 0x80000000
or edx, esi
je 0x5fce7b
mov ebp, dword [ebp + 0x40]
mov dword [ecx + 0x50], esi
mov dword [ecx + 0x54], edi
jmp 0x5fce66
cmp ecx, eax
jbe 0x5fc41d
jmp 0x5fc8d5
mov edi, dword [ebp + 4]
mov esi, dword [ebp]
mov ebx, edi
xor ebx, 0x80000000
or ebx, esi
je 0x5fd695
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov edx, edi
mov eax, esi
xor edx, ebx
xor eax, ecx
or edx, eax
jne 0x5fd4d8
mov eax, dword [esp + 0x5c]
add esi, dword [eax + 0x18]
adc edi, dword [eax + 0x1c]
mov dword [ebp], esi
mov dword [ebp + 4], edi
mov edx, ebx
xor edx, 0x80000000
or edx, ecx
je 0x5fd4f4
mov eax, dword [esp + 0x5c]
add ecx, dword [eax + 0x18]
adc ebx, dword [eax + 0x1c]
mov dword [ebp + 8], ecx
mov dword [ebp + 0xc], ebx
mov ecx, dword [esp + 0x5c]
mov ebx, dword [ecx + 0x54]
xor ebx, 0x80000000
or ebx, dword [ecx + 0x50]
jne 0x5fd3aa
mov edx, edi
xor edx, 0x80000000
or edx, esi
je 0x5fd3aa
mov ebp, dword [ebp + 0x40]
mov dword [ecx + 0x50], esi
mov dword [ecx + 0x54], edi
jmp 0x5fd395
mov ecx, dword [esp + 0xe4]
mov edi, dword [ecx + 8]
mov ebx, dword [ecx + 0xc]
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], ebx
jmp 0x5fc9a8
mov esi, dword [esp + 0xb8]
mov edi, ebp
mov dword [esp + 0xa8], 0
mov ebx, dword [esi + 0x1c]
mov ecx, dword [esi + 0x18]
mov dword [esp + 0xac], 0
mov eax, ebx
xor eax, 0x80000000
or eax, ecx
je 0x5fd6b2
mov dword [esp + 0xac], ebx
mov ebx, dword [esp + 0xe4]
mov dword [esp + 0xa8], ecx
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x54], ecx
jmp 0x5fd59f
mov edi, dword [edi + 0x40]
test edi, edi
je 0x5fd7b0
mov edx, dword [esp + 0x54]
cmp dword [edi + 0x18], edx
jne 0x5fd594
mov edx, dword [edi + 4]
mov eax, dword [edi]
mov ebx, dword [edi + 8]
mov esi, dword [edi + 0xc]
mov ecx, edx
xor eax, ebx
xor ecx, esi
or ecx, eax
jne 0x5fd7b0
mov eax, esi
xor eax, 0x80000000
or eax, ebx
jne 0x5fd7b0
mov esi, dword [edi + 0x20]
test esi, esi
jne 0x5fd7b0
mov ebx, dword [esp + 0xe4]
mov eax, dword [ebx + 0x20]
cdq
sub dword [esp + 0xa8], eax
sbb dword [esp + 0xac], edx
jmp 0x5fd594
mov ecx, dword [esp + 0xe4]
mov edi, dword [ecx]
mov ebx, dword [ecx + 4]
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], ebx
jmp 0x5fd230
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
sub eax, ecx
sbb edx, ebx
jmp 0x5fcd52
mov dword [esp], edx
call fcn.00672afb
test eax, eax
mov ecx, eax
je 0x5fd805
mov eax, dword [esp + 0x58]
mov edx, dword [eax + 0x44]
test edx, edx
je 0x5fd7f2
lea eax, [ebx*8]
imul edx, ecx
mov ebx, dword [esp + 0xb8]
mov ecx, edx
cdq
idiv ecx
mov edx, dword [ebx + 8]
mov dword [esp + 0x58], edx
jmp 0x5fd185
mov ebx, dword [esp + 0x5c]
mov ebp, dword [ebx + 0x54]
xor ebp, 0x80000000
or ebp, dword [ebx + 0x50]
jne 0x5fd6a0
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0xe4]
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x54], esi
mov ebx, dword [edi + 8]
mov esi, dword [edi + 0xc]
jmp 0x5fcb65
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
jmp 0x5fd4d8
mov edx, dword [esp + 0xe4]
mov ebx, dword [edx + 8]
mov esi, dword [edx + 0xc]
jmp 0x5fcb65
mov esi, dword [esp + 0xb8]
mov edx, dword [esi + 0x74]
mov eax, dword [esi + 0x70]
mov esi, edx
or esi, eax
jne 0x5fc491
test ebp, ebp
je 0x5fd781
mov ecx, dword [esp + 0xe4]
mov ebp, dword [ecx + 0x18]
jmp 0x5fd6e8
mov edi, dword [edi + 0x40]
test edi, edi
je 0x5fd7d2
cmp dword [edi + 0x18], ebp
jne 0x5fd6dd
mov edx, dword [edi + 4]
mov eax, dword [edi]
mov ebx, dword [edi + 8]
mov esi, dword [edi + 0xc]
mov ecx, edx
xor eax, ebx
xor ecx, esi
or ecx, eax
jne 0x5fd85c
mov eax, esi
xor eax, 0x80000000
or eax, ebx
jne 0x5fd774
mov ebx, dword [edi + 0x20]
test ebx, ebx
jne 0x5fd7d2
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xac]
mov esi, dword [ecx + 0x108]
mov dword [edi + 8], edx
mov dword [edi + 0xc], eax
test esi, esi
jne 0x5fd751
mov ebx, dword [esp + 0xa8]
mov esi, dword [esp + 0xac]
mov dword [edi], ebx
mov dword [edi + 4], esi
mov esi, dword [esp + 0xe4]
mov ecx, dword [esi + 0x20]
mov eax, ecx
mov dword [edi + 0x20], ecx
cdq
add dword [esp + 0xa8], ecx
adc dword [esp + 0xac], edx
jmp 0x5fd6dd
mov edi, dword [esp + 0xb8]
mov ecx, dword [edi + 0x18]
mov ebx, dword [edi + 0x1c]
mov eax, ebx
xor eax, 0x80000000
or eax, ecx
jne 0x5fc491
mov ebx, dword [esp + 0xb8]
mov esi, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
mov dword [ebx + 0x70], esi
mov dword [ebx + 0x74], ecx
jmp 0x5fc491
mov esi, dword [esp + 0xb8]
mov ecx, dword [esp + 0xa8]
mov ebx, dword [esp + 0xac]
mov edi, ebp
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], ebx
jmp 0x5fd6c9
mov edx, dword [esp + 0xb8]
mov ecx, dword [edx + 0x18]
mov ebx, dword [edx + 0x1c]
jmp 0x5fd781
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
sub ecx, esi
sbb ebx, edi
jmp 0x5fcd66
mov edi, dword [esp + 0xb8]
mov ebp, dword [edi + 8]
mov dword [esp + 0x58], ebp
jmp 0x5fc41d
mov esi, dword [esp + 0x58]
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x5fd7f2
mov eax, ebx
mov edi, dword [esp + 0x58]
mov esi, ecx
imul dword [edi + 0x40]
sar esi, 0x1f
mov dword [esp + 8], ecx
shld edx, eax, 3
shl eax, 3
mov dword [esp + 0xc], esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00a51f28
mov edx, dword [esp + 0xb8]
mov ebx, dword [edx + 8]
mov dword [esp + 0x58], ebx
jmp 0x5fd185
mov ebp, dword [esp + 0xb8]
mov ecx, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x1c]
jmp 0x5fd781