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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4782a0
sub esp, 0x7c
mov edx, dword [esp + 0x90]
cmp edx, 0x12
jg 0x478287
mov ebx, dword [esp + 0x88]
test ebx, ebx
xchg ebp, ebx
sete bl
xchg ebp, ebx
mov edi, dword [esp + 0x84]
test edi, edi
mov eax, edx
sete dl
and edx, ebp
test dl, dl
je 0x477cc6
mov eax, dword [esp + 0x80]
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
add esp, 0x7c
ret
cmp ebx, 1
sete dl
xchg ebp, ebx
seta bl
xchg ebp, ebx
and edx, 1
or ebp, edx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x477ce9
mov ecx, ebx
xor edx, edx
mov ebp, 0x20
jmp 0x477cf1
mov ecx, ebx
mov edx, ecx
mov ebx, edi
xor ebp, ebp
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], ebp
cmp ebx, 0x10000
mov esi, edi
xchg edi, ebx
setae bl
xchg edi, ebx
test edx, edx
xchg ebp, ebx
sete bl
xchg ebp, ebx
seta dl
and edi, ebp
or edi, edx
xchg edi, eax
test al, al
xchg edi, eax
je 0x477d3a
shr ebx, 0x10
mov edx, dword [esp + 0x3c]
mov edi, edx
shl edx, 0x10
or ebx, edx
shr edi, 0x10
mov edx, edi
mov edi, dword [esp + 0x38]
lea ebp, [edi + 0x10]
jmp 0x477d42
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], ebp
cmp ebx, 0x100
xchg edi, ebx
setae bl
xchg edi, ebx
test edx, edx
xchg ebp, ebx
sete bl
xchg ebp, ebx
seta dl
and edi, ebp
or edi, edx
xchg edi, eax
test al, al
xchg edi, eax
je 0x477d89
shr ebx, 8
mov edx, dword [esp + 0x3c]
mov edi, edx
shl edx, 0x18
or ebx, edx
shr edi, 8
mov edx, edi
mov edi, dword [esp + 0x38]
lea ebp, [edi + 8]
jmp 0x477d91
mov ebp, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x478279
cmp ebx, 0x100
jae 0x47826d
lea edx, [0x77ce7e]
movzx edx, byte [edx + ebx]
lea ebx, [edx + ebp]
cmp ebx, 0x37
jge 0x477e1a
mov dword [esp + 0x38], ebx
lea edx, [edx + ebp - 0x37]
neg edx
cmp edx, 0x20
sbb ebp, ebp
lea edi, [edx - 0x20]
mov dword [esp + 0x78], edi
cmp edi, 0x20
sbb eax, eax
xchg edi, ebx
neg ebx
xchg edi, ebx
cmp edi, 0x20
sbb ebx, ebx
mov ecx, edi
mov edi, esi
shr esi, cl
mov ecx, dword [esp + 0x78]
shl edi, cl
and esi, ebx
mov ecx, edx
mov ebx, dword [esp + 0x84]
shl ebx, cl
and ebx, ebp
and eax, edi
mov edi, dword [esp + 0x88]
shl edi, cl
and edi, ebp
or edi, esi
or edi, eax
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x38]
lea eax, [edx + eax - 0x37]
jmp 0x477e25
mov eax, dword [esp + 0x8c]
mov edi, ecx
mov ebx, esi
imul ecx, eax, 0x13441
add ecx, 0x4105b6
sar ecx, 0x12
mov edx, dword [esp + 0x90]
sub edx, ecx
mov dword [esp + 0x74], edx
lea ecx, [edx - 1]
cmp ecx, 0x37
jg 0x477e54
test ecx, ecx
xchg esi, ebx
setge bl
xchg esi, ebx
jmp 0x477e56
xor esi, esi
mov dword [esp + 0x34], ecx
xchg esi, eax
mov byte [esp + 0x22], al
xchg esi, eax
mov dword [esp + 0x28], edi
mov dword [esp + 0x24], ebx
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
call fcn.00479be0
movzx eax, byte [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
test ecx, ecx
jge 0x478255
mov dword [esp + 0x44], edx
mov dword [esp + 0x40], ebx
mov ebp, dword [esp + 0x74]
lea esi, [ebp + 0x15]
cmp esi, 0x16
jae 0x477ede
mov esi, dword [esp + 0x24]
test esi, esi
xchg edi, ebx
sete bl
xchg edi, ebx
mov ebp, dword [esp + 0x28]
test ebp, ebp
sete dl
and edx, edi
test dl, dl
jne 0x478152
mov byte [esp + 0x21], al
mov edx, dword [esp + 0x34]
neg edx
mov dword [esp + 0x2c], edx
xor edi, edi
jmp 0x478181
movzx esi, byte [esp + 0x22]
mov dword [esp + 0x48], ecx
xchg esi, eax
mov byte [esp + 0x22], al
xchg esi, eax
mov byte [esp + 0x21], al
mov edi, ecx
neg ecx
mov dword [esp + 0x70], ecx
lea ebp, [ecx - 0x20]
xchg ebp, ebx
neg ebx
xchg ebp, ebx
cmp ebp, 0x20
sbb eax, eax
cmp ecx, 0x20
sbb esi, esi
add edi, 0x20
xchg edi, ebx
neg ebx
xchg edi, ebx
mov dword [esp + 0x78], edi
cmp edi, 0x20
sbb edx, edx
mov dword [esp + 0x6c], edx
mov ebx, 1
shl ebx, cl
mov dword [esp + 0x68], ebx
mov ecx, edi
mov ebx, 1
shl ebx, cl
mov ecx, ebp
mov edi, 1
shr edi, cl
and edi, eax
and ebx, edx
mov edx, dword [esp + 0x68]
and edx, esi
or ebx, edi
add edx, 0xffffffff
mov dword [esp + 0x54], edx
adc ebx, 0xffffffff
mov ecx, dword [esp + 0x70]
mov edi, dword [esp + 0x40]
shr edi, cl
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x44]
shr edx, cl
mov ecx, ebp
mov ebp, dword [esp + 0x44]
shl ebp, cl
and edi, esi
and ebp, eax
or ebp, edi
mov eax, dword [esp + 0x6c]
and edx, eax
or edx, ebp
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x44]
mov ebp, eax
shr eax, cl
and eax, esi
mov dword [esp + 0x44], eax
and ebx, ebp
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x40]
and ebp, esi
mov dword [esp + 0x4c], ebp
movzx esi, byte [esp + 0x22]
xchg esi, eax
test al, al
xchg esi, eax
je 0x47806f
mov dword [esp + 0x40], edx
mov esi, dword [esp + 0x48]
inc esi
xchg esi, ebx
neg ebx
xchg esi, ebx
lea ecx, [esi - 0x20]
mov edi, ecx
neg ecx
mov dword [esp + 0x78], ecx
cmp ecx, 0x20
sbb eax, eax
cmp edi, 0x20
sbb edx, edx
mov ecx, edi
mov ebp, 1
shl ebp, cl
mov ecx, dword [esp + 0x78]
mov edi, 1
shr edi, cl
and edi, eax
and ebp, edx
or ebp, edi
cmp ebp, ebx
sete al
setb dl
cmp esi, 0x20
sbb ebp, ebp
mov ecx, esi
mov esi, 1
shl esi, cl
and esi, ebp
mov ebp, dword [esp + 0x4c]
cmp esi, ebp
xchg edi, ebx
setb bl
xchg edi, ebx
and edi, eax
or edi, edx
xchg edi, eax
test al, al
xchg edi, eax
je 0x478024
movzx ecx, byte [esp + 0x21]
jmp 0x478051
cmp esi, ebp
sete cl
and eax, ecx
test al, al
je 0x47805f
movzx ecx, byte [esp + 0x21]
test cl, cl
je 0x478051
test al, al
je 0x478064
test cl, cl
je 0x478064
mov eax, dword [esp + 0x40]
test eax, 1
setne dl
jmp 0x4780f3
mov eax, dword [esp + 0x40]
mov edx, 1
jmp 0x4780f3
movzx ecx, byte [esp + 0x21]
mov eax, dword [esp + 0x40]
xor edx, edx
jmp 0x4780f3
mov dword [esp + 0x50], ebx
mov esi, dword [esp + 0x48]
lea ecx, [esi + 1]
neg ecx
mov dword [esp + 0x64], ecx
cmp ecx, 0x20
sbb esi, esi
lea edi, [ecx - 0x20]
mov dword [esp + 0x78], edi
xchg edi, ebx
neg ebx
xchg edi, ebx
cmp edi, 0x20
sbb eax, eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x78]
cmp eax, 0x20
sbb eax, eax
shr ebx, cl
test esi, ebx
sete bl
mov byte [esp + 0x23], bl
mov ecx, edi
mov ebx, dword [esp + 0x50]
mov edi, ebx
shl ebx, cl
mov ecx, dword [esp + 0x64]
shr ebp, cl
and ebp, esi
mov esi, dword [esp + 0x6c]
and ebx, esi
or ebx, ebp
mov ecx, dword [esp + 0x78]
mov ebp, edi
shr edi, cl
and edi, eax
or edi, ebx
cmp edi, 1
sete al
movzx ebx, byte [esp + 0x23]
and eax, ebx
movzx ecx, byte [esp + 0x21]
mov ebx, ebp
mov ebp, dword [esp + 0x4c]
mov esi, eax
mov eax, edx
mov edx, esi
test ebx, ebx
setne bl
test ebp, ebp
xchg ebp, ebx
setne bl
xchg ebp, ebx
or ebx, ebp
test bl, bl
je 0x478109
xor ecx, ecx
mov ebx, dword [esp + 0x80]
mov dword [esp], ebx
mov ebp, dword [esp + 0x44]
mov dword [esp + 8], ebp
mov dword [esp + 4], eax
xor ecx, 1
mov byte [esp + 0xc], cl
mov byte [esp + 0xd], dl
mov eax, dword [esp + 0x90]
mov dword [esp + 0x10], eax
call fcn.004782b0
mov eax, dword [esp + 0x80]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x74]
sub ecx, edx
inc ecx
mov dword [eax + 0x10], ecx
add esp, 0x7c
ret
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x74]
mov eax, 1
mov esi, 1
jmp 0x477ee3
mov eax, dword [esp + 0x30]
lea edi, [eax + 1]
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x68]
movzx eax, byte [esp + 0x21]
mov ebx, dword [esp + 0x40]
cmp edi, edx
jge 0x478152
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x24], esi
mov eax, 0xcccccccd
mul ebp
shr edx, 2
mov dword [esp + 0x78], edx
lea ebx, [edx + edx*4]
sub ebp, ebx
mov eax, 0x33333333
mul ebp
mov dword [esp + 0x6c], edx
mov dword [esp + 0x68], eax
mov eax, 0xcccccccd
mul esi
shr edx, 2
mov dword [esp + 0x60], edx
lea ebx, [edx + edx*4]
sub esi, ebx
lea ebx, [esi + ebp]
mov eax, 0xcccccccd
mov esi, edx
mul ebx
shr edx, 2
mov dword [esp + 0x5c], edx
add esi, 0
mov dword [esp + 0x58], esi
mov ebx, dword [esp + 0x68]
add esi, ebx
add edx, esi
mov dword [esp + 0x68], edx
mov eax, edx
mov ebp, 5
mul ebp
mov ebp, dword [esp + 0x60]
add ebp, 0
mov ebp, dword [esp + 0x78]
adc ebp, 0
mov edi, dword [esp + 0x58]
add edi, ebx
mov ebx, dword [esp + 0x6c]
adc ebp, ebx
mov ebx, dword [esp + 0x5c]
add ebx, esi
adc ebp, 0
lea ebx, [ebp + ebp*4]
add edx, ebx
mov ebx, dword [esp + 0x28]
cmp ebx, edx
setne dl
mov ebx, dword [esp + 0x24]
cmp eax, ebx
setne bl
or edx, ebx
test dl, dl
je 0x478169
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x74]
movzx eax, byte [esp + 0x21]
movzx esi, byte [esp + 0x22]
jmp 0x477ee3
lea eax, [0x7346e0]
mov dword [esp], eax
lea eax, [0x7ca2c4]
mov dword [esp + 4], eax
call fcn.00430590
mov eax, ebx
mov ecx, 0x100
call fcn.00456b50
mov esi, edx
mov eax, ebx
mov ecx, 0x100
call fcn.00456c40
lea eax, [0x7346e0]
mov dword [esp], eax
lea eax, [0x7ca2bc]
mov dword [esp + 4], eax
call fcn.00430590
nop
call fcn.00455690
jmp fcn.00477c60