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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x80]
cmp eax, dword [ecx + 8]
jbe 0x4781e1
sub esp, 0x100
mov eax, dword [esp + 0x104]
mov dword [esp], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 4], eax
call fcn.004781f0
movzx eax, byte [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
test al, al
je 0x47817d
mov dword [esp + 0x40], ebx
mov dword [esp + 0xf4], ebp
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.00478400
mov eax, dword [esp + 8]
movzx ecx, byte [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
test cl, cl
je 0x47817d
mov ecx, eax
neg eax
test edx, edx
je 0x4776f4
cmp byte [ebx], 0x2c
jne 0x47775d
mov ecx, dword [esp + 0xf4]
mov dword [esp + 0x11c], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x120], ecx
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x110]
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x128], eax
mov dword [esp + 0x134], 0x7fffffff
mov dword [esp + 0x130], 0xffffffff
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov dword [esp + 0x90], ecx
mov dword [esp + 0x3c], eax
mov dword [esp], ebx
mov dword [esp + 4], edx
call fcn.004781f0
movzx eax, byte [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0xc]
test al, al
je 0x478119
mov dword [esp + 0xfc], ebx
mov dword [esp + 0x8c], ebp
test ecx, ecx
je 0x4777a8
cmp byte [edx], 0x2c
jne 0x4777bd
mov esi, dword [esp + 0x90]
add esi, 0xfffff1f0
xchg esi, ebx
neg ebx
xchg esi, ebx
jmp 0x4777ee
mov dword [esp], edx
mov dword [esp + 4], ecx
call fcn.00478400
mov esi, dword [esp + 8]
movzx eax, byte [esp + 0x14]
xchg esi, ebx
neg ebx
xchg esi, ebx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0xfc]
mov ebp, dword [esp + 0x8c]
test al, al
je 0x478119
test ecx, ecx
jne 0x477805
lea edx, [0x505f65]
mov ecx, 0xf
mov dword [esp + 0x90], esi
movzx ebx, byte [edx]
cmp bl, 0x2c
je 0x47787d
cmp bl, 0x3b
je 0x47787d
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x88], ecx
lea edi, [esp + 0xb8]
xor eax, eax
call fcn.0045d50b
lea edi, [esp + 0xcc]
call fcn.0045d50b
mov ecx, dword [esp + 0x88]
dec ecx
mov ebx, ecx
neg ecx
sar ecx, 0x1f
and ecx, 1
add ecx, edx
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.004788b0
movzx ecx, byte [esp + 0x24]
mov byte [esp + 0x2b], cl
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
lea edi, [esp + 0xe0]
lea esi, [esp + 8]
call fcn.0045d9ee
lea edi, [esp + 0xb8]
lea esi, [esp + 0xe0]
call fcn.0045d9ee
movzx ecx, byte [esp + 0x2b]
test cl, cl
je 0x4780b5
test edx, edx
je 0x4780b5
cmp byte [ebx], 0x2c
jne 0x4780b5
lea eax, [edx - 1]
mov ecx, eax
neg eax
sar eax, 0x1f
and eax, 1
add eax, ebx
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004788b0
movzx eax, byte [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x88], ecx
lea edi, [esp + 0xe0]
lea esi, [esp + 8]
call fcn.0045d9ee
lea edi, [esp + 0xcc]
lea esi, [esp + 0xe0]
call fcn.0045d9ee
test al, al
je 0x478051
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x478051
mov eax, dword [esp + 0x114]
add eax, 0x1ad9c900
mov edx, dword [esp + 0x118]
adc edx, 0x7ffffffe
mov dword [esp + 4], edx
mov dword [esp], eax
mov byte [esp + 8], 0
call fcn.004764b0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x34], eax
mov ecx, eax
sar eax, 0x1f
mov dword [esp + 0x84], eax
mov edx, ecx
add ecx, 0xd116ebf
adc eax, 0x44
mov ebp, eax
shr eax, 1
mov esi, 0xa3d70a3e
mov edi, edx
mul esi
shr edx, 7
mov dword [esp + 0x80], edx
imul eax, edx, 0x190
sub ebp, eax
mov eax, ebp
mov ebx, 0xa3d70a
mul ebx
mov dword [esp + 0x7c], eax
mov ebx, ecx
shr ecx, 1
mov eax, ecx
mov ecx, edx
mul esi
shr edx, 7
mov dword [esp + 0x78], edx
imul eax, edx, 0x190
sub ebx, eax
lea eax, [ebp + ebp*2]
shl eax, 5
add eax, ebx
shr eax, 1
mov ebx, edx
mul esi
shr edx, 7
mov dword [esp + 0x74], edx
add ebx, 0
mov ebp, dword [esp + 0x7c]
add ebp, ebx
add edx, ebp
mov dword [esp + 0x4c], edx
mov eax, 0x190
mul edx
mov dword [esp + 0x70], edx
mov dword [esp + 0x6c], eax
mov eax, 0x23ab1
mov esi, dword [esp + 0x4c]
mul esi
mov dword [esp + 0x68], edx
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0x78]
add esi, 0
mov esi, dword [esp + 0x80]
adc esi, 0
mov edx, dword [esp + 0x7c]
add edx, ebx
adc ecx, esi
mov edx, dword [esp + 0x74]
add edx, ebp
adc ecx, 0
mov dword [esp + 0x64], ecx
imul edx, ecx, 0x190
mov ebx, dword [esp + 0x70]
add edx, ebx
mov ebx, dword [esp + 0x6c]
sub edi, ebx
mov dword [esp + 0x80], edi
mov ebx, dword [esp + 0x84]
sbb ebx, edx
mov dword [esp + 0x84], ebx
add edi, 0xd116ebf
adc ebx, 0x44
mov dword [esp + 0xb4], ebx
shr ebx, 1
mov eax, ebx
mov ebp, 0xa3d70a3e
mul ebp
shr edx, 5
mov dword [esp + 0x7c], edx
imul eax, edx, 0x64
mov ecx, dword [esp + 0xb4]
sub ecx, eax
mov eax, ecx
mov esi, 0x28f5c28
mul esi
mov dword [esp + 0x78], eax
mov esi, edi
shr edi, 1
mov eax, edi
mov edi, edx
mul ebp
shr edx, 5
mov dword [esp + 0x74], edx
imul eax, edx, 0x64
sub esi, eax
lea eax, [ecx + ecx*2]
shl eax, 5
add eax, esi
shr eax, 1
mov ecx, edx
mul ebp
shr edx, 5
mov dword [esp + 0x70], edx
add ecx, 0
mov ebp, dword [esp + 0x78]
mov esi, ebp
add ebp, ecx
add edx, ebp
mov dword [esp + 0x4c], edx
mov eax, 0x64
mul edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x6c], eax
mov eax, 0x8eac
mov ebx, dword [esp + 0x4c]
mul ebx
mov dword [esp + 0xb0], edx
mov dword [esp + 0xac], eax
mov ebx, dword [esp + 0x74]
add ebx, 0
mov ebx, dword [esp + 0x7c]
adc ebx, 0
add esi, ecx
adc edi, ebx
mov ecx, dword [esp + 0x70]
add ecx, ebp
adc edi, 0
mov dword [esp + 0xb4], edi
imul ecx, edi, 0x64
mov ebx, dword [esp + 0x78]
add ecx, ebx
mov ebx, dword [esp + 0x80]
mov ebp, dword [esp + 0x6c]
sub ebx, ebp
mov dword [esp + 0x80], ebx
mov ebp, dword [esp + 0x84]
sbb ebp, ecx
mov dword [esp + 0x84], ebp
mov ecx, ebx
add ebx, 0xd116ebf
adc ebp, 0x44
mov dword [esp + 0xa8], ebp
shr ebx, 2
shl ebp, 0x1e
or ebp, ebx
mov dword [esp + 0x7c], ebp
mov ebx, eax
mov eax, 0x5b5
mul ebp
mov dword [esp + 0x78], edx
mov dword [esp + 0x74], eax
shl ebp, 2
mov dword [esp + 0x70], ebp
sub ecx, ebp
mov dword [esp + 0x6c], ecx
add ecx, 0xd116ebf
mov eax, 0x16d
mul ecx
mov dword [esp + 0xa4], edx
mov dword [esp + 0xa0], eax
mov ecx, dword [esp + 0x58]
add ecx, ebx
mov dword [esp + 0x9c], ecx
mov edx, dword [esp + 0x74]
add edx, ecx
mov dword [esp + 0x98], edx
add eax, edx
mov dword [esp + 0x94], eax
mov eax, 0x15180
mov edx, dword [esp + 0x94]
mul edx
mov dword [esp + 0x94], edx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x118]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x114]
mov dword [esp], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x15180
call fcn.004575c0
mov eax, dword [esp + 0x38]
imul eax, eax, 0x15180
mov ecx, eax
sar eax, 0x1f
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
add edx, ecx
mov dword [esp + 0x2c], edx
adc ebx, eax
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x64]
imul eax, eax, 0x23ab1
mov ecx, dword [esp + 0x68]
add eax, ecx
mov ecx, dword [esp + 0xb4]
imul ecx, ecx, 0x8eac
mov ebp, dword [esp + 0xb0]
add ecx, ebp
mov ebp, dword [esp + 0x58]
mov esi, dword [esp + 0xac]
add ebp, esi
adc ecx, eax
mov eax, dword [esp + 0xa8]
shr eax, 2
mov ebp, eax
shl eax, 2
mov esi, dword [esp + 0x7c]
shr esi, 0x1e
or esi, eax
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x70]
sub eax, edi
mov eax, dword [esp + 0x84]
sbb eax, esi
mov esi, dword [esp + 0x6c]
add esi, 0xd116ebf
adc eax, 0x44
imul ebp, ebp, 0x5b5
mov esi, dword [esp + 0x78]
add ebp, esi
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x9c]
add esi, edi
adc ebp, ecx
imul eax, eax, 0x16d
mov ecx, dword [esp + 0xa4]
add eax, ecx
mov ecx, dword [esp + 0xa0]
mov esi, dword [esp + 0x98]
add ecx, esi
adc eax, ebp
imul eax, eax, 0x15180
mov ecx, dword [esp + 0x94]
add eax, ecx
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x5c]
add ecx, 0xe5263700
mov dword [esp + 0x7c], ecx
adc eax, 0x80000001
mov dword [esp + 0x60], eax
nop
mov edi, dword [esp + 0x34]
mov dword [esp], edi
lea edi, [esp + 4]
lea esi, [esp + 0xb8]
call fcn.0045d9ee
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
call fcn.00479030
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x88], eax
mov ecx, dword [esp + 0x34]
mov dword [esp], ecx
lea edi, [esp + 4]
lea esi, [esp + 0xcc]
call fcn.0045d9ee
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x18], ecx
call fcn.00479030
mov eax, dword [esp + 0x88]
mov ecx, eax
sar eax, 0x1f
mov edx, dword [esp + 0x1c]
mov ebx, edx
sar edx, 0x1f
cmp edx, eax
xchg ebp, ebx
setl bl
xchg ebp, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
cmp ebx, ecx
xchg edi, ebx
setb bl
xchg edi, ebx
and edi, esi
or ebp, edi
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x477e1a
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0x90]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x40]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0xf4]
mov dword [esp + 0xf8], esi
mov esi, dword [esp + 0xfc]
mov dword [esp + 0xf4], esi
mov esi, dword [esp + 0x8c]
jmp 0x477e5c
mov ecx, ebx
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0xfc]
mov dword [esp + 0xf8], ebx
mov ebx, dword [esp + 0x88]
mov ebx, edx
mov edx, eax
mov eax, ebx
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], ebx
xchg ebp, eax
mov byte [esp + 0x2a], al
xchg ebp, eax
mov dword [esp + 0x3c], edi
mov dword [esp + 0x48], edx
mov ebp, dword [esp + 0x30]
cmp edx, ebp
xchg edi, ebx
setg bl
xchg edi, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
mov edx, dword [esp + 0x2c]
cmp edx, ebx
setb bl
and ebx, esi
or edi, ebx
xchg edi, eax
test al, al
xchg edi, eax
jne 0x477fcc
cmp eax, ebp
setl bl
xchg ebp, ebx
sete bl
xchg ebp, ebx
cmp edx, ecx
setae dl
and edx, ebp
or edx, ebx
test dl, dl
je 0x477f3b
mov edx, dword [esp + 0x5c]
add ecx, edx
mov ebx, dword [esp + 0x80]
adc eax, ebx
add ecx, 0xe5263700
adc eax, 0x80000001
add edx, 0xe7076a80
adc ebx, 0x80000001
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x11c], ebp
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x120], ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x124], ebp
mov dword [esp + 0x12c], eax
mov dword [esp + 0x128], ecx
mov dword [esp + 0x134], ebx
mov dword [esp + 0x130], edx
movzx eax, byte [esp + 0x2a]
mov byte [esp + 0x138], al
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x44]
add ebx, edx
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x48]
adc esi, ebp
add ebx, 0xe5263700
adc esi, 0x80000001
add edx, ecx
adc ebp, eax
add edx, 0xe5263700
adc ebp, 0x80000001
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x124], eax
mov dword [esp + 0x12c], esi
mov dword [esp + 0x128], ebx
mov dword [esp + 0x134], ebp
mov dword [esp + 0x130], edx
movzx eax, byte [esp + 0x2a]
xor eax, 1
mov byte [esp + 0x138], al
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x44]
add eax, ecx
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x48]
adc ecx, edx
add eax, 0xe5263700
adc ecx, 0x80000001
mov edx, dword [esp + 0xf4]
mov dword [esp + 0x11c], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x120], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x124], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x12c], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x128], edx
mov dword [esp + 0x134], ecx
mov dword [esp + 0x130], eax
movzx eax, byte [esp + 0x2a]
mov byte [esp + 0x138], al
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
call fcn.0045c000
jmp fcn.00477660