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

Disassembly:
sub esp, 0x80
and dword [esp + 0x38], 0
and dword [esp + 0x18], 0
push ebx
push ebp
push esi
mov esi, edx
mov ebp, ecx
mov eax, esi
mov dword [esp + 0x14], esi
shl eax, 5
push edi
mov ecx, dword [ebp + 0x2ac08]
mov dword [esp + 0x2c], ebp
mov eax, dword [eax + ebp + 0x2abb0]
cdq
add eax, eax
mov dword [esp + 0x3c], eax
sub ecx, 1
je 0x45bf8a
push 0xffffffffffffffff
pop ebx
sub ecx, 1
je 0x45b2a2
mov edi, dword [ebp + 0xc988]
test esi, esi
je 0x45b230
mov edx, dword [ebp + 0x300]
sub edx, dword [ebp + 0x308]
add edx, edi
jmp 0x45b232
xor edx, edx
mov eax, dword [ebp + 0x2ab68]
mov ecx, eax
sub ecx, edx
mov dword [esp + 0x38], edx
cmp eax, edx
sbb eax, eax
and eax, ecx
mov ecx, edi
sub ecx, eax
mov eax, dword [ebp + 0x2ab68]
sub ecx, edx
dec eax
add eax, ecx
xor edx, edx
div edi
mov dword [esp + 0x88], eax
lea ecx, [eax + esi]
cmp ecx, 1
jle 0x45b27d
lea ecx, [eax - 1]
imul edi, ecx
mov eax, ecx
mov dword [esp + 0x88], eax
add edi, dword [esp + 0x38]
jmp 0x45b283
mov edi, dword [ebp + 0x2ab68]
mov edx, edi
mov dword [esp + 0x14], edi
sub edx, eax
lea ecx, [ebp + 0x2ab38]
call fcn.004599d0
mov dword [esp + 0x8c], eax
jmp 0x45b751
mov eax, dword [ebp + 0x2ac98]
xor edi, edi
mov edx, dword [ebp + 0x2ac94]
mov ecx, edx
mov dword [esp + 0x88], eax
mov eax, dword [ebp + 0x2ac9c]
mov dword [esp + 0x8c], eax
mov eax, dword [ebp + 0x2ac80]
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x2ac84]
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0x2ac88]
mov dword [esp + 0x60], eax
mov eax, dword [ebp + 0x2ac8c]
mov dword [esp + 0x64], eax
mov eax, dword [ebp + 0x2ac90]
sub ecx, eax
sub eax, edx
add eax, dword [ebp + 0x2ab68]
cmp dword [ebp + 0x2ab68], ecx
mov ecx, dword [ebp + 0xc988]
cmovl edi, eax
mov dword [esp + 0x1c], ecx
mov eax, dword [ebp + 0x2ac90]
xor ecx, ecx
sub edi, eax
add edi, edx
cdq
sub dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
sbb ecx, edx
mov dword [esp + 0x14], edi
add eax, dword [ebp + 0x300]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x2ab68]
adc ecx, dword [ebp + 0x304]
cdq
cmp ecx, edx
jg 0x45b353
jl 0x45b34f
cmp dword [esp + 0x1c], eax
jae 0x45b353
mov edx, ebx
jmp 0x45b355
xor edx, edx
mov eax, dword [ebp + 0x300]
sub eax, dword [ebp + 0x2ac90]
mov ecx, dword [ebp + 0x2ab68]
sub eax, ecx
add eax, dword [ebp + 0xc988]
and eax, edx
add eax, ecx
cmp edi, eax
jge 0x45b382
sub eax, edi
mov dword [esp + 0x28], eax
jmp 0x45b45f
mov eax, dword [ebp + 0x2ac58]
and dword [esp + 0x28], 0
mov dword [esp + 0x34], eax
test eax, eax
je 0x45b45f
mov eax, dword [ebp + 0x2ac5c]
add eax, dword [ebp + 0x2ac64]
mov edx, dword [ebp + 0x2ac60]
mov ecx, eax
sub ecx, edx
mov dword [esp + 0x38], edx
cmp eax, edx
cmovl ecx, eax
mov eax, ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp + 0x2ac58]
lea edx, [ecx + eax*8]
mov dword [esp + 0x44], eax
dec eax
mov dword [esp + 0x40], edx
sub edx, 8
mov dword [esp + 0x24], eax
test eax, eax
jns 0x45b3f6
mov ecx, dword [ebp + 0x2ac60]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
dec eax
add eax, ecx
lea edx, [edx + ecx*8]
mov dword [esp + 0x24], eax
add edx, 0xfffffff8
cmp eax, dword [ebp + 0x2ac64]
je 0x45b45f
cmp dword [edx + 4], 0
jl 0x45b3c7
mov ebp, edi
mov edi, dword [edx + 4]
mov esi, edi
mov ecx, dword [edx]
shr esi, 0x1f
dec dword [esp + esi*4 + 0x88]
call fcn.00459e09
sub dword [esp + esi*8 + 0x58], eax
mov eax, ebx
sbb dword [esp + esi*8 + 0x5c], edx
and edi, 0x7fffffff
sub eax, edi
xor ecx, ecx
add ebp, eax
mov eax, dword [esp + 0x24]
inc eax
cmp eax, dword [esp + 0x38]
cmovl ecx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x24], ecx
lea edx, [eax + ecx*8]
cmp ecx, dword [esp + 0x30]
jne 0x45b406
mov esi, dword [esp + 0x18]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x14]
mov eax, dword [ebp + 0x2ac54]
shr eax, 0x1f
mov dword [esp + 0x44], eax
cmp eax, esi
je 0x45b48e
mov ecx, dword [ebp + 0x2ac50]
dec dword [esp + eax*4 + 0x88]
call fcn.00459e09
mov ecx, dword [esp + 0x44]
sub dword [esp + ecx*8 + 0x58], eax
sbb dword [esp + ecx*8 + 0x5c], edx
xor eax, eax
lea edx, [ebp + 0x2ab78]
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], edx
mov ecx, dword [esp + eax*4 + 0x88]
mov dword [esp + 0x44], ecx
test ecx, ecx
jle 0x45b512
mov ecx, dword [esp + eax*8 + 0x58]
mov eax, dword [esp + eax*8 + 0x5c]
test eax, eax
jg 0x45b4c9
jl 0x45b4bf
test ecx, ecx
jne 0x45b4c9
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
jmp 0x45b4da
push eax
push ecx
call fcn.0045cfb4
pop ecx
pop ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x44]
cdq
test edx, edx
jg 0x45b4ef
jl 0x45b4e9
test eax, eax
jne 0x45b4ef
mov eax, ebx
mov edx, ebx
jmp 0x45b4f8
push edx
push eax
call fcn.0045cfb4
pop ecx
pop ecx
mov ecx, dword [esp + 0x38]
sub ecx, eax
mov eax, dword [esp + 0x34]
sbb eax, edx
mov edx, dword [esp + 0x24]
sub ecx, 0
sbb eax, 0x30000000
jmp 0x45b525
mov ecx, dword [ebp + 0x2ab58]
mov eax, dword [ebp + 0x2ab5c]
neg ecx
adc eax, 0
neg eax
mov dword [edx + 4], eax
mov eax, dword [esp + 0x30]
inc eax
mov dword [edx], ecx
add edx, 8
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], edx
cmp eax, 2
jl 0x45b49e
mov eax, dword [ebp + 0x2ac54]
shr eax, 0x1f
mov dword [esp + 0x30], eax
cmp eax, esi
je 0x45b64d
mov ecx, dword [ebp + esi*8 + 0x2ab7c]
mov eax, dword [ebp + esi*8 + 0x2ab78]
cmp ecx, 0x2e000000
jg 0x45b590
jl 0x45b574
test eax, eax
jae 0x45b590
add eax, 0
adc ecx, 0x30000000
push ecx
push eax
call fcn.0045cc4a
pop ecx
pop ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edx
jmp 0x45b59c
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], 0x7fff
mov esi, dword [esp + esi*4 + 0x88]
mov edx, dword [esp + 0x18]
lea ecx, [esi + 1]
mov dword [esp + edx*4 + 0x88], ecx
mov ecx, dword [esp + 0x3c]
sar ecx, 1
call fcn.00459e09
push dword [esp + 0x38]
mov dword [esp + 0x48], eax
mov eax, esi
push dword [esp + 0x38]
mov dword [esp + 0x48], edx
cdq
push edx
push eax
call fcn.004356a0
mov ecx, dword [esp + 0x44]
add ecx, eax
mov eax, dword [esp + 0x40]
adc eax, edx
test eax, eax
jg 0x45b5f4
jl 0x45b5ec
test ecx, ecx
jne 0x45b5f4
mov esi, ebx
mov dword [esp + 0x38], ebx
jmp 0x45b603
push eax
push ecx
call fcn.0045cfb4
pop ecx
pop ecx
mov esi, eax
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x30]
mov eax, dword [esp + eax*4 + 0x88]
cdq
test edx, edx
jg 0x45b61f
jl 0x45b619
test eax, eax
jne 0x45b61f
mov eax, ebx
mov edx, ebx
jmp 0x45b628
push edx
push eax
call fcn.0045cfb4
pop ecx
pop ecx
mov ecx, dword [esp + 0x38]
sub esi, eax
mov eax, dword [esp + 0x18]
sbb ecx, edx
sub esi, 0
sbb ecx, 0x30000000
mov dword [ebp + eax*8 + 0x2ab78], esi
mov dword [ebp + eax*8 + 0x2ab7c], ecx
jmp 0x45b65f
mov eax, dword [ebp + 0x2ac50]
cdq
add eax, eax
and dword [esp + 0x48], 0
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x45b751
add edi, eax
lea ecx, [ebp + 0x2ab38]
mov edx, eax
mov dword [esp + 0x14], edi
call fcn.004599d0
mov edx, dword [ebp + 0x2ab80]
mov ebx, eax
mov ecx, dword [ebp + 0x2ab84]
add edx, 0
adc ecx, 0x30000000
push ecx
push edx
call fcn.0045cc4a
mov edi, dword [esp + 0x94]
mov esi, eax
pop ecx
pop ecx
mov ecx, edx
mov eax, edi
cdq
push edx
push eax
push ecx
push esi
call fcn.004356a0
mov ecx, dword [ebp + 0x2abd0]
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], edx
call fcn.00459e09
mov esi, eax
mov ecx, edx
mov eax, ebx
cdq
push edx
push eax
push ecx
push esi
call fcn.004356a0
mov ecx, dword [esp + 0x44]
add ecx, eax
mov eax, dword [esp + 0x40]
adc eax, edx
lea edx, [edi + ebx]
mov dword [esp + 0x8c], edx
test eax, eax
jg 0x45b701
jl 0x45b6f8
test ecx, ecx
jne 0x45b701
or ebx, 0xffffffff
mov esi, ebx
mov edi, ebx
jmp 0x45b718
push eax
push ecx
call fcn.0045cfb4
pop ecx
mov edi, edx
mov esi, eax
mov edx, dword [esp + 0x90]
or ebx, 0xffffffff
pop ecx
mov eax, edx
cdq
test edx, edx
jg 0x45b72b
jl 0x45b725
test eax, eax
jne 0x45b72b
mov eax, ebx
mov edx, ebx
jmp 0x45b734
push edx
push eax
call fcn.0045cfb4
pop ecx
pop ecx
sub esi, eax
sbb edi, edx
sub esi, 0
mov dword [ebp + 0x2ab80], esi
sbb edi, 0x30000000
mov dword [ebp + 0x2ab84], edi
mov edi, dword [esp + 0x14]
mov esi, dword [ebp + 0x308]
mov eax, edi
mov ecx, dword [ebp + 0x30c]
add esi, 0x3e8
cdq
adc ecx, 0
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x2ab40]
mov edi, edx
push ecx
push esi
push dword [ebp + 0x2acac]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x2ab44]
push dword [ebp + 0x2aca8]
mov dword [esp + 0x54], eax
call fcn.004355f0
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x28]
cdq
push edx
push eax
push ecx
push esi
call fcn.004356a0
mov esi, dword [esp + 0x38]
push edi
push esi
push dword [ebp + 0x2ab3c]
mov dword [esp + 0x3c], eax
push dword [ebp + 0x2ab38]
mov dword [esp + 0x2c], edx
call fcn.004356a0
mov ecx, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
sub ecx, dword [ebp + 0x2ab48]
sbb eax, dword [ebp + 0x2ab4c]
add ecx, dword [ebp + 0x2ab40]
mov dword [esp + 0x30], ecx
adc eax, dword [ebp + 0x2ab44]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov edx, dword [ebp + eax*8 + 0x2ab78]
add edx, dword [ebp + 0x2ab58]
mov dword [esp + 0x20], edx
mov edx, dword [ebp + eax*8 + 0x2ab7c]
adc edx, dword [ebp + 0x2ab5c]
mov dword [esp + 0x24], edx
cmp dword [esp + 0x1c], edi
jg 0x45b839
jl 0x45b829
cmp ecx, esi
ja 0x45b839
mov edx, 0x18000000
xor edi, edi
mov dword [esp + 0x14], edx
jmp 0x45baee
mov edi, dword [esp + 0x18]
mov eax, 0x5570
sub eax, edi
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov edx, dword [ebp + eax*8]
add edx, dword [ebp + 0x2ab58]
mov eax, dword [ebp + eax*8 + 4]
adc eax, dword [ebp + 0x2ab5c]
mov dword [esp + 0x74], eax
mov eax, dword [esp + edi*4 + 0x88]
mov dword [esp + 0x70], edx
cdq
mov esi, eax
mov dword [esp + 0x84], eax
add esi, ecx
mov dword [esp + 0x80], edx
mov ecx, edx
adc ecx, dword [esp + 0x1c]
sub esi, 1
push edx
push eax
sbb ecx, 0
push ecx
push esi
call fcn.004355f0
mov esi, edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], esi
test esi, esi
jl 0x45ba5a
jg 0x45b8b4
test eax, eax
je 0x45ba5a
mov edx, dword [ebp + edi*4 + 0x2ab60]
mov eax, edi
shl eax, 2
push 4
pop ecx
sub ecx, eax
mov dword [esp + 0x54], edx
mov eax, edx
shr eax, 1
sub eax, dword [esp + 0x20]
mov dword [esp + 0x4c], eax
push 0
pop eax
sbb eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov eax, dword [ecx + ebp + 0x2ab60]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + ecx + 0x88]
mov ecx, dword [esp + 0x5c]
cdq
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x14], edx
mov eax, ebp
add eax, edx
adc esi, ecx
shrd eax, esi, 1
sar esi, 1
mov dword [esp + 0x34], eax
test esi, esi
jg 0x45b92f
jl 0x45b929
test eax, eax
jne 0x45b92f
mov eax, ebx
mov edx, ebx
jmp 0x45b938
push esi
push eax
call fcn.0045cfb4
pop ecx
pop ecx
add eax, dword [esp + 0x4c]
push 0
push dword [esp + 0x58]
adc edx, dword [esp + 0x58]
push edx
push eax
call fcn.004355f0
mov dword [esp + 0x58], eax
test edi, edi
je 0x45b961
mov ecx, 0xaedc1d1e
mov eax, 0x4dc88
jmp 0x45b96b
mov ecx, 0x5123e2e2
mov eax, 0xfffb2377
add ecx, dword [esp + 0x58]
push 0
push dword [esp + 0x70]
adc eax, edx
push eax
push ecx
call fcn.004356a0
add eax, dword [esp + 0x70]
adc edx, dword [esp + 0x74]
push edx
push eax
call fcn.0045cc4a
pop ecx
pop ecx
push dword [esp + 0x78]
push dword [esp + 0x80]
push edx
push eax
call fcn.004356a0
push esi
push dword [esp + 0x38]
mov dword [esp + 0x60], eax
push dword [esp + 0x88]
mov dword [esp + 0x94], edx
push dword [esp + 0x90]
call fcn.004356a0
mov ecx, dword [esp + 0x58]
add ecx, eax
mov eax, dword [esp + 0x88]
adc eax, edx
sub ecx, dword [esp + 0x30]
sbb eax, dword [esp + 0x1c]
test eax, eax
jg 0x45ba09
jl 0x45b9e5
test ecx, ecx
jae 0x45b9ff
mov edx, dword [esp + 0x34]
mov ecx, esi
mov esi, dword [esp + 0x38]
add edx, 1
mov dword [esp + 0x14], edx
adc ecx, 0
mov dword [esp + 0x28], ecx
jmp 0x45ba1f
test eax, eax
jl 0x45ba33
jg 0x45ba09
test ecx, ecx
je 0x45ba33
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
sub ebp, 1
mov edx, dword [esp + 0x14]
sbb esi, 0
mov dword [esp + 0x38], esi
cmp ecx, esi
jl 0x45b90f
jg 0x45ba37
cmp edx, ebp
jb 0x45b90f
jmp 0x45ba37
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
test ecx, ecx
jl 0x45ba5a
mov eax, dword [esp + 0x14]
jg 0x45ba49
test eax, eax
je 0x45ba5a
push ecx
push eax
call fcn.0045cfb4
pop ecx
pop ecx
mov esi, eax
mov dword [esp + 0x38], edx
jmp 0x45ba60
mov esi, ebx
mov dword [esp + 0x38], ebx
mov ecx, dword [ebp + edi*4 + 0x2ab60]
xor eax, eax
mov edx, ecx
shr edx, 1
sub edx, dword [esp + 0x20]
push 0
sbb eax, dword [esp + 0x28]
add edx, esi
push ecx
adc eax, dword [esp + 0x40]
push eax
push edx
call fcn.004355f0
shld edx, eax, 6
xor edi, edi
mov esi, 0x4000000
shl eax, 6
sub edi, eax
sbb esi, edx
mov edx, 0x18000000
cmp esi, edx
jl 0x45bab0
jg 0x45baa6
test edi, edi
je 0x45bab0
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
jmp 0x45bad2
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x38], eax
xor ecx, ecx
mov eax, edx
sub ecx, edi
sbb eax, esi
and ecx, dword [esp + 0x38]
and eax, dword [esp + 0x34]
add edi, ecx
adc esi, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], esi
cmp byte [ebp + 0x2ab91], 0
mov ecx, dword [ebp + eax*4 + 0x2ab60]
mov dword [esp + 0x28], ecx
je 0x45bca4
mov eax, dword [ebp + 0x2ab50]
mov esi, eax
mov ecx, dword [ebp + 0x2ab54]
add esi, 0x1f
mov ebp, dword [esp + 0x40]
mov edx, ecx
adc edx, 0
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x2c]
shrd esi, edx, 5
sar edx, 5
sub dword [esp + 0x1c], eax
mov eax, dword [esp + 0x44]
sbb eax, ecx
mov dword [esp + 0x34], esi
mov ecx, dword [esp + 0x1c]
add ecx, dword [ebp + 0x2ab38]
mov dword [esp + 0x1c], ecx
adc eax, dword [ebp + 0x2ab3c]
add ecx, esi
mov dword [esp + 0x88], edx
adc eax, edx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], eax
test eax, eax
jg 0x45bb7e
jl 0x45bb74
test ecx, ecx
jne 0x45bb7e
mov dword [esp + 0x30], ebx
mov dword [esp + 0x38], ebx
jmp 0x45bb8f
push eax
push ecx
call fcn.0045cfb4
pop ecx
pop ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x14]
mov esi, edi
mov eax, dword [esp + 0x28]
sub esi, 0
cdq
sbb ecx, 0x4000000
mov dword [esp + 0x58], eax
shrd esi, ecx, 6
push edx
push eax
sar ecx, 6
push ecx
push esi
mov dword [esp + 0x7c], edx
call fcn.004356a0
mov ecx, eax
mov dword [esp + 0x70], edx
mov eax, dword [esp + 0x20]
sub eax, ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x24]
sbb ecx, edx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], ecx
cmp ecx, dword [esp + 0x38]
jg 0x45bcaa
jl 0x45bbef
cmp eax, dword [esp + 0x30]
jae 0x45bcaa
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x34]
cmp dword [esp + 0x84], ecx
jg 0x45bc14
jl 0x45bc0e
cmp dword [esp + 0x80], edx
jae 0x45bc14
xor esi, esi
mov edi, ebx
jmp 0x45bc2e
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov edi, dword [esp + 0x8c]
mov esi, dword [esp + 0x88]
xor eax, eax
and eax, esi
mov esi, dword [esp + 0x1c]
and esi, edi
add eax, 0
push ecx
push edx
adc esi, edx
push esi
push eax
call fcn.004355f0
mov ecx, dword [esp + 0x7c]
sub ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x78]
sbb esi, dword [esp + 0x38]
mov ecx, esi
sar ecx, 0x1f
push ecx
push esi
push edx
push eax
call fcn.004356a0
push dword [esp + 0x6c]
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x2c]
push dword [esp + 0x5c]
sar eax, 1
cdq
add esi, eax
adc ecx, edx
add esi, dword [esp + 0x7c]
adc ecx, dword [esp + 0x78]
push ecx
push esi
call fcn.004355f0
mov edi, eax
mov esi, edx
add edi, 0
adc esi, 0x100000
shld esi, edi, 6
mov dword [esp + 0x14], esi
shl edi, 6
jmp 0x45bcae
mov esi, dword [esp + 0x14]
jmp 0x45bcb2
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x94], 0
movzx ecx, byte [ebp + 0x31b]
mov dword [esp + 0x7c], ecx
je 0x45bdeb
shl eax, 6
add eax, ecx
mov ecx, dword [ebp + eax*8 + 0x2a738]
mov edx, ecx
mov eax, dword [ebp + eax*8 + 0x2a73c]
sub edx, 0x5e68dc58
mov dword [esp + 0x38], edx
mov ebp, 0xa4d3c2
mov edx, eax
sbb edx, ebp
add ecx, 0x5e68dc58
mov dword [esp + 0x34], edx
adc eax, ebp
cmp eax, esi
jg 0x45bd13
jl 0x45bd09
cmp ecx, edi
jae 0x45bd13
mov dword [esp + 0x30], ebx
mov dword [esp + 0x1c], ebx
jmp 0x45bd35
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x88]
mov dword [esp + 0x30], edx
cmp eax, esi
jg 0x45bd47
jl 0x45bd3f
cmp ecx, edi
jae 0x45bd47
mov edx, ebx
mov dword [esp + 0x14], ebx
jmp 0x45bd65
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x88]
mov ebp, dword [esp + 0x34]
sub ecx, edi
sbb eax, esi
and edx, ecx
and dword [esp + 0x14], eax
add edx, edi
adc dword [esp + 0x14], esi
cmp dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x2c]
jl 0x45bd95
jg 0x45bd8b
cmp edx, dword [esp + 0x38]
jbe 0x45bd95
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x14], ebx
jmp 0x45bdb7
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x88]
mov dword [esp + 0x2c], edx
and dword [esp + 0x1c], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
and edx, ecx
mov ecx, dword [esp + 0x34]
sub eax, edx
sbb ecx, dword [esp + 0x1c]
sub eax, edi
mov edi, dword [esp + 0x38]
sbb ecx, esi
and eax, dword [esp + 0x2c]
and ecx, dword [esp + 0x14]
sub edi, eax
mov esi, dword [esp + 0x34]
sbb esi, ecx
mov dword [esp + 0x14], esi
cmp dword [ebp + 0x38], 0
jne 0x45bf11
mov eax, dword [ebp + 0x2ab3c]
mov ecx, dword [ebp + 0x2ab38]
shrd ecx, eax, 1
sar eax, 1
add ecx, dword [esp + 0x40]
adc eax, dword [esp + 0x44]
test eax, eax
jg 0x45be23
jl 0x45be19
test ecx, ecx
jne 0x45be23
mov dword [esp + 0x38], ebx
mov dword [esp + 0x44], ebx
jmp 0x45be34
push eax
push ecx
call fcn.0045cfb4
pop ecx
pop ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 0x14]
mov esi, edi
mov eax, dword [esp + 0x28]
sub esi, 0
cdq
sbb ecx, 0x4000000
mov dword [esp + 0x80], eax
shrd esi, ecx, 6
push edx
push eax
sar ecx, 6
push ecx
push esi
mov dword [esp + 0x94], edx
call fcn.004356a0
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x44]
sub ecx, eax
mov eax, dword [esp + 0x24]
sbb eax, edx
mov dword [esp + 0x88], ecx
cmp eax, esi
jl 0x45bf0d
mov ecx, dword [esp + 0x38]
jg 0x45be94
cmp dword [esp + 0x88], ecx
jbe 0x45bf0d
mov eax, dword [esp + 0x28]
push dword [esp + 0x84]
sar eax, 1
push dword [esp + 0x84]
cdq
sub eax, ecx
sbb edx, esi
add eax, dword [esp + 0x28]
adc edx, dword [esp + 0x2c]
push edx
push eax
call fcn.004355f0
mov edi, eax
mov esi, edx
add edi, 0
mov ecx, 0x18000000
adc esi, 0x100000
shld esi, edi, 6
shl edi, 6
cmp esi, ecx
jl 0x45bee3
jg 0x45bedf
test edi, edi
je 0x45bee3
mov edx, ebx
jmp 0x45befd
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov edx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x88]
xor eax, eax
sub eax, edi
sbb ecx, esi
and eax, ebx
and ecx, edx
add edi, eax
adc esi, ecx
jmp 0x45bf11
mov esi, dword [esp + 0x14]
mov ecx, edi
mov eax, esi
sub ecx, 0
push 0
push dword [esp + 0x2c]
sbb eax, 0x4000000
shrd ecx, eax, 6
sar eax, 6
push eax
push ecx
call fcn.004356a0
mov ecx, dword [ebp + 0x2ab58]
sub ecx, eax
mov eax, dword [ebp + 0x2ab5c]
sbb eax, edx
add ecx, dword [esp + 0x48]
adc eax, dword [esp + 0x3c]
push eax
push ecx
call fcn.0045cc4a
add dword [ebp + 0x2aca8], eax
mov ecx, ebp
push esi
adc edx, dword [ebp + 0x2acac]
push edi
push dword [ebp + 0x38]
mov dword [ebp + 0x2acac], edx
push dword [esp + 0x90]
mov edx, dword [esp + 0x30]
call fcn.00459e44
add esp, 0x18
mov dword [ebp + 0x2ab88], edi
mov dword [ebp + 0x2ab8c], esi
jmp 0x45bfb0
movzx eax, byte [ebp + 0x31b]
shl esi, 6
add esi, eax
mov ecx, dword [ebp + esi*8 + 0x2a738]
mov dword [ebp + 0x2ab88], ecx
mov ecx, dword [ebp + esi*8 + 0x2a73c]
mov dword [ebp + 0x2ab8c], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x80
ret