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

Disassembly:
sub esp, 0x168
push ebx
push esi
mov esi, dword [esp + 0x178]
mov eax, dword [esp + 0x17c]
mov ebx, dword [esp + 0x180]
push edi
mov ecx, dword [esi + 0x40]
mov edi, dword [eax + 0x510]
mov edx, dword [eax + 0x504]
mov dword [esp + 0x1c], edi
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], edx
test ebx, ebx
mov ecx, dword [ecx + 0x1c]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ecx + 0xb20]
mov dword [esp + 0x28], ecx
je 0x473fa9
push ebp
xor ebp, ebp
test edx, edx
jle 0x473b22
mov esi, dword [ebx + ebp*4]
mov eax, dword [edi + 0x340]
mov ecx, esi
and ecx, 0x7fff
dec eax
cmp eax, 3
ja case.default.0x473adf
jmp dword [eax*4 + 0x473ff8]
sar ecx, 2
jmp case.default.0x473adf
sar ecx, 3
jmp case.default.0x473adf
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
mov ecx, edx
mov edx, dword [esp + 0x24]
jmp case.default.0x473adf
sar ecx, 4
and esi, 0x8000
or esi, ecx
mov dword [ebx + ebp*4], esi
inc ebp
cmp ebp, edx
jl 0x473ac8
mov eax, dword [esp + 0x184]
mov ecx, dword [ebx]
cmp edx, 2
mov dword [esp + 0x74], ecx
mov ecx, dword [ebx + 4]
mov dword [esp + 0x78], ecx
jle 0x473c4b
lea ecx, [esp + 0x74]
add edi, 0x34c
add eax, 0x30c
sub ecx, ebx
add edx, 0xfffffffe
lea ebp, [ebx + 8]
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], edx
jmp 0x473b65
mov eax, dword [esp + 0x18]
mov ebx, dword [eax + 0xfc]
mov esi, dword [eax]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x188]
mov ecx, dword [eax]
mov eax, dword [edx + esi*4]
mov edi, dword [edx + ebx*4]
push ecx
push eax
mov eax, dword [esp + 0x28]
push edi
mov ecx, dword [eax + esi*4 + 0x344]
mov edx, dword [eax + ebx*4 + 0x344]
push ecx
push edx
call fcn.004732e0
mov ecx, dword [ebp]
add esp, 0x14
test ch, ch
js 0x473c0c
cmp eax, ecx
je 0x473c0c
mov edx, dword [esp + 0x184]
mov edx, dword [edx + 0x50c]
sub edx, eax
cmp edx, eax
jl 0x473bbf
mov edx, eax
sub ecx, eax
jns 0x473bdd
mov eax, edx
neg eax
cmp ecx, eax
jge 0x473bd2
sub edx, ecx
dec edx
mov ecx, edx
jmp 0x473be7
add ecx, ecx
or edx, 0xffffffff
sub edx, ecx
mov ecx, edx
jmp 0x473be7
cmp ecx, edx
jl 0x473be5
add ecx, edx
jmp 0x473be7
add ecx, ecx
mov eax, dword [esp + 0x14]
and edi, 0x7fff
mov dword [eax + ebp], ecx
mov eax, dword [esp + 0x188]
mov dword [eax + ebx*4], edi
mov ecx, dword [eax + esi*4]
and ecx, 0x7fff
mov dword [eax + esi*4], ecx
jmp 0x473c1d
mov ecx, dword [esp + 0x14]
or ah, 0x80
mov dword [ebp], eax
mov dword [ecx + ebp], 0
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov eax, 4
add esi, eax
add edx, eax
add ebp, eax
mov eax, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], eax
jne 0x473b61
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x17c]
push 1
push 1
push ebx
call fcn.00492c50
mov esi, dword [esp + 0x190]
mov edx, dword [esi + 0x51c]
inc edx
mov dword [esi + 0x51c], edx
mov edx, dword [esi + 0x50c]
dec edx
push edx
call fcn.00474010
mov ecx, dword [esi + 0x518]
add eax, eax
add ecx, eax
mov eax, dword [esi + 0x50c]
dec eax
mov dword [esi + 0x518], ecx
push eax
call fcn.00474010
mov ecx, dword [esp + 0x88]
push eax
push ecx
push ebx
call fcn.00492c50
mov edx, dword [esi + 0x50c]
dec edx
push edx
call fcn.00474010
push eax
mov eax, dword [esp + 0xa0]
push eax
push ebx
call fcn.00492c50
mov eax, dword [edi]
add esp, 0x30
test eax, eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x10], 2
jle 0x473ec6
lea ecx, [edi + 4]
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x14]
mov esi, 1
mov ebx, dword [edx]
xor edx, edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x34], edx
mov ebp, dword [edi + ebx*4 + 0xc0]
mov eax, dword [edi + ebx*4 + 0x80]
mov ecx, ebp
mov dword [esp + 0x18], eax
shl esi, cl
cmp ebp, edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], edx
je 0x473e29
xor eax, eax
cmp esi, edx
jle 0x473d7e
lea edx, [ebx + 0xa]
shl edx, 5
add edx, edi
mov ebx, dword [edx]
test ebx, ebx
jge 0x473d5e
mov dword [esp + eax*4 + 0x54], 1
jmp 0x473d70
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + ebx*4 + 0x720]
mov ecx, dword [ecx + 4]
mov dword [esp + eax*4 + 0x54], ecx
inc eax
add edx, 4
cmp eax, esi
jl 0x473d4e
mov ebx, dword [esp + 0x20]
xor edx, edx
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp ecx, edx
jle 0x473de5
mov ecx, dword [esp + 0x10]
lea ecx, [esp + ecx*4 + 0x74]
mov dword [esp + 0x20], ecx
jmp 0x473d98
xor edx, edx
cmp esi, edx
jle 0x473db3
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx]
cmp ecx, dword [esp + edx*4 + 0x54]
jl 0x473daf
inc edx
cmp edx, esi
jl 0x473da2
jmp 0x473db3
mov dword [esp + eax*4 + 0x34], edx
mov edx, dword [esp + eax*4 + 0x34]
mov ecx, dword [esp + 0x28]
shl edx, cl
mov ecx, dword [esp + 0x1c]
or ecx, edx
mov edx, dword [esp + 0x28]
add edx, ebp
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x20]
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x20], edx
jl 0x473d96
mov eax, dword [esp + 0x17c]
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x2c]
push eax
mov eax, dword [edi + ebx*4 + 0x100]
push ecx
lea edx, [eax + eax*4]
lea eax, [eax + edx*2]
lea ecx, [ebp + eax*4]
push ecx
call fcn.0046e640
mov ecx, dword [esp + 0x190]
add esp, 0xc
mov edx, dword [ecx + 0x514]
add edx, eax
mov dword [ecx + 0x514], edx
xor edx, edx
jmp 0x473e2d
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
xor esi, esi
cmp eax, edx
jle 0x473e9a
mov eax, dword [esp + 0x10]
lea edx, [ebx*8 + 0x50]
mov dword [esp + 0x1c], edx
lea ebx, [esp + eax*4 + 0x74]
mov ecx, dword [esp + esi*4 + 0x34]
mov edx, dword [esp + 0x1c]
add ecx, edx
mov eax, dword [edi + ecx*4]
test eax, eax
jl 0x473e8e
lea edx, [eax + eax*4]
mov ecx, dword [ebx]
lea eax, [eax + edx*2]
mov edx, dword [ebp + eax*4 + 4]
cmp ecx, edx
lea eax, [ebp + eax*4]
jge 0x473e8e
mov edx, dword [esp + 0x17c]
push edx
push ecx
push eax
call fcn.0046e640
mov ecx, dword [esp + 0x190]
add esp, 0xc
add dword [ecx + 0x518], eax
mov eax, dword [esp + 0x18]
inc esi
add ebx, 4
cmp esi, eax
jl 0x473e4a
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ecx, dword [edi]
add ebx, eax
mov eax, dword [esp + 0x24]
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], edx
jl 0x473ce9
mov edx, dword [esp + 0x188]
mov ecx, dword [edi + 0x340]
mov eax, dword [esp + 0x184]
xor ebx, ebx
imul ecx, dword [edx]
mov esi, dword [eax + 0x504]
mov edx, 1
xor ebp, ebp
cmp esi, edx
mov dword [esp + 0x10], edx
jle 0x473f63
add eax, 0x108
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [esp + 0x188]
mov esi, dword [eax + edx*4]
mov eax, esi
and eax, 0x7fff
cmp eax, esi
jne 0x473f40
mov esi, dword [edi + 0x340]
mov ebx, dword [edi + edx*4 + 0x344]
imul esi, eax
mov edx, dword [esp + 0x18c]
push edx
push esi
push ecx
push ebx
push ebp
call fcn.00474020
add esp, 0x14
mov ebp, ebx
mov ecx, esi
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
add edx, 4
inc eax
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x184]
mov dword [esp + 0x10], eax
cmp eax, dword [edx + 0x504]
jl 0x473efd
mov esi, dword [esp + 0x180]
pop ebp
mov eax, dword [esi + 0x24]
cdq
sub eax, edx
sar eax, 1
cmp ebx, eax
jge 0x473f8f
mov eax, dword [esp + 0x188]
inc ebx
mov dword [eax + ebx*4 - 4], ecx
mov eax, dword [esi + 0x24]
cdq
sub eax, edx
sar eax, 1
cmp ebx, eax
jl 0x473f77
mov eax, dword [0x4d52d4]
pop edi
inc eax
pop esi
mov dword [0x4d52d4], eax
mov eax, 1
pop ebx
add esp, 0x168
ret
mov ecx, dword [esp + 0x178]
push 1
push 0
push ecx
call fcn.00492c50
mov eax, dword [esi + 0x24]
mov edi, dword [esp + 0x194]
cdq
sub eax, edx
add esp, 0xc
mov ecx, eax
xor eax, eax
sar ecx, 1
shl ecx, 2
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4d52d4]
pop edi
inc eax
pop esi
mov dword [0x4d52d4], eax
xor eax, eax
pop ebx
add esp, 0x168
ret