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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x474c80
sub esp, 0x7c
mov edx, dword [esp + 0x90]
cmp edx, 0x12
jg 0x474c67
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 0x4746a6
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 0x4746c9
mov ecx, ebx
xor edx, edx
mov ebp, 0x20
jmp 0x4746d1
mov ecx, ebx
mov edx, ecx
mov ebx, edi
xor ebp, ebp
mov dword [esp + 0x24], edx
mov dword [esp + 0x2c], 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 0x47471a
shr ebx, 0x10
mov edx, dword [esp + 0x24]
mov edi, edx
shl edx, 0x10
or ebx, edx
shr edi, 0x10
mov edx, edi
mov edi, dword [esp + 0x2c]
lea ebp, [edi + 0x10]
jmp 0x474722
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x24], edx
mov dword [esp + 0x2c], 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 0x474769
shr ebx, 8
mov edx, dword [esp + 0x24]
mov edi, edx
shl edx, 0x18
or ebx, edx
shr edi, 8
mov edx, edi
mov edi, dword [esp + 0x2c]
lea ebp, [edi + 8]
jmp 0x474771
mov ebp, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
test edx, edx
jne 0x474c59
cmp ebx, 0x100
jae 0x474c4d
lea edx, [0x53e35b]
movzx edx, byte [edx + ebx]
lea ebx, [edx + ebp]
cmp ebx, 0x37
jge 0x4747fa
mov dword [esp + 0x2c], 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 + 0x2c]
lea eax, [edx + eax - 0x37]
jmp 0x474805
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 0x474834
test ecx, ecx
xchg esi, ebx
setge bl
xchg esi, ebx
jmp 0x474836
xor esi, esi
mov dword [esp + 0x28], ecx
xchg esi, eax
mov byte [esp + 0x21], al
xchg esi, eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], ebx
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
call fcn.00476610
mov ecx, dword [esp + 0x18]
movzx eax, byte [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
test ecx, ecx
jge 0x474c35
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], ebx
mov ebp, dword [esp + 0x74]
lea esi, [ebp + 0x15]
cmp esi, 0x16
jae 0x4748be
mov esi, dword [esp + 0x30]
test esi, esi
xchg edi, ebx
sete bl
xchg edi, ebx
mov ebp, dword [esp + 0x34]
test ebp, ebp
sete dl
and edx, edi
test dl, dl
jne 0x474b32
mov byte [esp + 0x22], al
mov edx, dword [esp + 0x28]
neg edx
mov dword [esp + 0x38], edx
xor edi, edi
jmp 0x474b61
movzx esi, byte [esp + 0x21]
mov dword [esp + 0x54], ecx
xchg esi, eax
mov byte [esp + 0x21], al
xchg esi, eax
mov byte [esp + 0x22], 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 + 0x40], edx
adc ebx, 0xffffffff
mov ecx, dword [esp + 0x70]
mov edi, dword [esp + 0x44]
shr edi, cl
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x48]
shr edx, cl
mov ecx, ebp
mov ebp, dword [esp + 0x48]
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 + 0x48]
mov ebp, eax
shr eax, cl
and eax, esi
mov dword [esp + 0x48], eax
and ebx, ebp
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
and ebp, esi
mov dword [esp + 0x4c], ebp
movzx esi, byte [esp + 0x21]
xchg esi, eax
test al, al
xchg esi, eax
je 0x474a4f
mov dword [esp + 0x44], edx
mov esi, dword [esp + 0x54]
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 0x474a04
movzx ecx, byte [esp + 0x22]
jmp 0x474a31
cmp esi, ebp
sete cl
and eax, ecx
test al, al
je 0x474a3f
movzx ecx, byte [esp + 0x22]
test cl, cl
je 0x474a31
test al, al
je 0x474a44
test cl, cl
je 0x474a44
mov eax, dword [esp + 0x44]
test eax, 1
setne dl
jmp 0x474ad3
mov eax, dword [esp + 0x44]
mov edx, 1
jmp 0x474ad3
movzx ecx, byte [esp + 0x22]
mov eax, dword [esp + 0x44]
xor edx, edx
jmp 0x474ad3
mov dword [esp + 0x50], ebx
mov esi, dword [esp + 0x54]
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 + 0x22]
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 0x474ae9
xor ecx, ecx
mov ebx, dword [esp + 0x80]
mov dword [esp], ebx
mov ebp, dword [esp + 0x48]
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.00474c90
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 + 0x48]
mov ebp, dword [esp + 0x74]
mov esi, 1
mov eax, 1
jmp 0x4748c3
mov eax, dword [esp + 0x3c]
lea edi, [eax + 1]
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x68]
movzx eax, byte [esp + 0x22]
mov ebx, dword [esp + 0x44]
cmp edi, edx
jge 0x474b32
mov dword [esp + 0x3c], edi
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], 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 + 0x34]
cmp ebx, edx
setne dl
mov ebx, dword [esp + 0x30]
cmp eax, ebx
setne bl
or edx, ebx
test dl, dl
je 0x474b49
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
mov ebp, dword [esp + 0x74]
movzx esi, byte [esp + 0x21]
movzx eax, byte [esp + 0x22]
jmp 0x4748c3
lea eax, [0x517d40]
mov dword [esp], eax
lea eax, [0x569e30]
mov dword [esp + 4], eax
call fcn.00435600
mov eax, ebx
mov ecx, 0x100
call fcn.00460b20
mov esi, edx
mov eax, ebx
mov ecx, 0x100
call fcn.00460bc0
lea eax, [0x517d40]
mov dword [esp], eax
lea eax, [0x569e28]
mov dword [esp + 4], eax
call fcn.00435600
nop
call fcn.0045f680
jmp fcn.00474640