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

Disassembly:
sub esp, 0x48
mov dword [esp + 8], ecx
xor eax, eax
mov ecx, dword [esp + 0x60]
push ebx
push ebp
push esi
mov dword [ecx], eax
mov ecx, dword [esp + 0x70]
test ecx, ecx
push edi
mov dword [esp + 0x10], eax
jne 0x478b25
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x68]
cmp ecx, edx
mov dword [esp + 0x1c], ecx
jg 0x479012
mov ebx, dword [esp + 0x6c]
lea ebp, [ecx + ecx*2]
shl ebp, 2
shl ecx, 5
mov dword [esp + 0x28], ebp
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x74], 0
mov eax, dword [edx + 0x88]
mov ecx, dword [eax + 0x98]
test ecx, ecx
je 0x4786e0
mov ecx, dword [eax + 0x2a0]
add ecx, ebp
mov esi, ecx
mov ecx, dword [esi]
shl ecx, 5
mov edx, dword [esi + 4]
mov esi, dword [esi + 8]
mov dword [esp + 0x54], esi
mov esi, dword [eax + 0x2d8]
mov ecx, dword [esi + ecx + 8]
lea edx, [ecx + edx*2]
jmp 0x478746
mov ecx, dword [eax + 0x74]
test ecx, ecx
jne 0x478705
mov ecx, dword [eax + 0x80]
test ecx, ecx
jne 0x478705
mov ecx, dword [eax + 0x2d8]
mov edx, dword [esp + 0x24]
mov ecx, dword [ecx + edx + 8]
mov dword [esp + 0x14], ecx
jmp 0x47874a
mov edx, dword [eax + 0x150]
add edx, ebp
mov ecx, dword [edx]
mov edi, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [esp + 0x54], edx
mov edx, dword [eax + 0x284]
dec edx
cmp edx, ecx
mov esi, edx
jl 0x478728
mov esi, ecx
test esi, esi
jge 0x478730
xor ecx, ecx
jmp 0x478736
cmp edx, ecx
jge 0x478736
mov ecx, edx
mov edx, dword [eax + 0x2d8]
shl ecx, 5
mov ecx, dword [edx + ecx + 8]
lea edx, [ecx + edi*2]
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x1c]
cmp edx, ecx
jne 0x47875c
mov esi, dword [esp + 0x64]
jmp 0x47879d
mov ecx, dword [eax + 0x98]
test ecx, ecx
je 0x478772
mov edx, dword [eax + 0x2a0]
mov esi, dword [edx + ebp + 8]
jmp 0x47879d
mov ecx, dword [eax + 0x74]
test ecx, ecx
jne 0x478793
mov ecx, dword [eax + 0x80]
test ecx, ecx
jne 0x478793
mov ecx, dword [eax + 0x2d8]
mov edx, dword [esp + 0x24]
mov esi, dword [ecx + edx]
dec esi
jmp 0x47879d
mov ecx, dword [eax + 0x150]
mov esi, dword [ecx + ebp + 8]
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x1c]
xor edx, edx
cmp edi, ecx
mov ecx, dword [esp + 0x5c]
setne dl
dec edx
and edx, ecx
mov edi, edx
jle 0x4788a8
mov edx, dword [eax + 0x104]
xor ebp, ebp
test edi, edi
mov dword [esp + 0x2c], edx
jle 0x4788a0
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x20], edi
mov ax, word [ebx]
cmp ax, 9
jne 0x4787f2
mov ecx, dword [esp + 0x2c]
mov eax, ebp
cdq
idiv ecx
sub ecx, edx
add ebp, ecx
jmp 0x47888a
test byte [0x536233], 1
jne 0x478913
mov dword [esp + 0x74], eax
and eax, 0xffff
cmp word [eax*2 + 0x53623c], 0
jne 0x47885b
mov edx, dword [0x5361f4]
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x78]
push 1
push ecx
push edx
call dword [0x4fd160]
mov eax, dword [0x536238]
test eax, eax
je 0x478844
mov eax, dword [0x536220]
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x74]
mov dx, word [esp + 0x30]
and ecx, 0xffff
mov word [ecx*2 + 0x53623c], dx
mov eax, dword [0x5361f4]
push 0x78
push eax
call fcn.0044dcc0
mov ecx, dword [esp + 0x7c]
xor edx, edx
and ecx, 0xffff
add esp, 8
shl eax, 1
mov dx, word [ecx*2 + 0x53623c]
cmp edx, eax
jge 0x478927
inc ebp
mov eax, dword [esp + 0x20]
add ebx, 2
dec eax
mov dword [esp + 0x20], eax
jne 0x4787d7
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x74], ebp
mov ebp, dword [esp + 0x28]
cmp edi, esi
jge 0x478a65
mov eax, dword [esp + 0x14]
sub esi, edi
lea ebp, [eax + edi*2]
mov ax, word [ebp]
cmp ax, 9
jne 0x47892f
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
mov eax, edi
mov edx, dword [ecx + 0x88]
mov ecx, dword [edx + 0x104]
cdq
idiv ecx
sub ecx, edx
add edi, ecx
test ecx, ecx
mov dword [esp + 0x74], edi
jle 0x478904
mov edx, dword [esp + 0x10]
lea eax, [ebx + edx*2]
add edx, ecx
mov dword [esp + 0x10], edx
test ebx, ebx
je 0x4788fe
mov word [eax], 0x20
add eax, 2
dec ecx
jne 0x4788f5
mov eax, dword [esp + 0x70]
mov dword [eax], 1
jmp 0x478a51
cmp ax, 0x2e80
jb 0x478889
cmp ax, 0xfad9
ja 0x478889
add ebp, 2
jmp 0x47888a
test byte [0x536233], 1
jne 0x478a24
mov ecx, eax
and eax, 0xffff
mov dword [esp + 0x20], ecx
cmp word [eax*2 + 0x53623c], 0
jne 0x47899c
mov eax, dword [0x5361f4]
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x24]
push 1
push edx
push eax
call dword [0x4fd160]
mov eax, dword [0x536238]
test eax, eax
je 0x478983
mov ecx, dword [0x536220]
mov eax, dword [esp + 0x38]
sub eax, ecx
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x20]
mov ax, word [esp + 0x38]
mov edx, ecx
and edx, 0xffff
mov word [edx*2 + 0x53623c], ax
cmp word [0x53632c], 0
mov eax, 0x78
mov dword [esp + 0x14], eax
jne 0x4789fd
mov eax, dword [0x5361f4]
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x18]
push 1
push edx
push eax
call dword [0x4fd160]
mov eax, dword [0x536238]
test eax, eax
je 0x4789e0
mov ecx, dword [0x536220]
mov eax, dword [esp + 0x44]
sub eax, ecx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x14]
mov cx, word [esp + 0x44]
mov edx, eax
and edx, 0xffff
mov word [edx*2 + 0x53623c], cx
mov ecx, dword [esp + 0x20]
and eax, 0xffff
xor edx, edx
and ecx, 0xffff
mov dx, word [eax*2 + 0x53623c]
xor eax, eax
mov ax, word [ecx*2 + 0x53623c]
shl edx, 1
cmp eax, edx
jge 0x478a30
jmp 0x478a34
cmp ax, 0x2e80
jb 0x478a34
cmp ax, 0xfad9
ja 0x478a34
inc dword [esp + 0x74]
mov ecx, dword [esp + 0x74]
inc ecx
test ebx, ebx
mov dword [esp + 0x74], ecx
je 0x478a4d
mov edx, dword [esp + 0x10]
mov cx, word [ebp]
mov word [ebx + edx*2], cx
inc dword [esp + 0x10]
add ebp, 2
dec esi
jne 0x4788b9
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
jmp 0x478a69
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x68]
cmp esi, edi
jge 0x478af8
mov eax, dword [esp + 0x18]
lea ecx, [esi + 1]
test ecx, ecx
mov eax, dword [eax + 0x88]
je 0x478ade
mov ecx, dword [eax + 0x98]
test ecx, ecx
je 0x478aae
mov edx, dword [eax + 0x2a0]
lea eax, [edx + ebp + 0xc]
mov ecx, eax
mov edx, dword [ecx]
mov dword [esp + 0x4c], edx
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x54], ecx
jmp 0x478ad1
mov ecx, dword [eax + 0x74]
test ecx, ecx
je 0x478ade
mov eax, dword [eax + 0x150]
lea ecx, [eax + ebp + 0xc]
mov edx, dword [eax + ebp + 0xc]
mov dword [esp + 0x4c], edx
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x54], ecx
xor edx, edx
test eax, eax
setg dl
mov eax, edx
test eax, eax
jne 0x478af8
test ebx, ebx
je 0x478af3
mov eax, dword [esp + 0x10]
mov word [ebx + eax*2], 0xd
mov word [ebx + eax*2 + 2], 0xa
add dword [esp + 0x10], 2
mov edx, dword [esp + 0x24]
inc esi
add edx, 0x20
add ebp, 0xc
cmp esi, edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ebp
jle 0x47869c
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x1c
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x68]
cmp esi, eax
mov dword [esp + 0x1c], esi
jg 0x47900e
mov eax, dword [esp + 0x18]
xor ebp, ebp
mov eax, dword [eax + 0x88]
mov ecx, dword [eax + 0x98]
test ecx, ecx
je 0x478b7b
mov edx, dword [eax + 0x2a0]
lea ecx, [esi + esi*2]
lea ecx, [edx + ecx*4]
mov edi, ecx
mov ecx, dword [edi]
shl ecx, 5
mov edx, dword [edi + 4]
mov edi, dword [edi + 8]
mov dword [esp + 0x54], edi
mov edi, dword [eax + 0x2d8]
mov ecx, dword [edi + ecx + 8]
lea edx, [ecx + edx*2]
jmp 0x478be2
mov ecx, dword [eax + 0x74]
test ecx, ecx
jne 0x478b9d
mov ecx, dword [eax + 0x80]
test ecx, ecx
jne 0x478b9d
mov ecx, dword [eax + 0x2d8]
mov edx, esi
shl edx, 5
mov edx, dword [ecx + edx + 8]
jmp 0x478be2
mov ecx, dword [eax + 0x150]
lea edx, [esi + esi*2]
lea edx, [ecx + edx*4]
mov ecx, dword [edx]
mov ebx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [esp + 0x54], edx
mov edx, dword [eax + 0x284]
dec edx
cmp edx, ecx
mov edi, edx
jl 0x478bc4
mov edi, ecx
test edi, edi
jge 0x478bcc
xor ecx, ecx
jmp 0x478bd2
cmp edx, ecx
jge 0x478bd2
mov ecx, edx
mov edx, dword [eax + 0x2d8]
shl ecx, 5
mov ecx, dword [edx + ecx + 8]
lea edx, [ecx + ebx*2]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x14], edx
cmp esi, ecx
jne 0x478bf4
mov edi, dword [esp + 0x64]
jmp 0x478c38
mov ecx, dword [eax + 0x98]
test ecx, ecx
je 0x478c09
mov edi, dword [eax + 0x2a0]
lea ecx, [esi + esi*2]
jmp 0x478c34
mov ecx, dword [eax + 0x74]
test ecx, ecx
jne 0x478c2b
mov ecx, dword [eax + 0x80]
test ecx, ecx
jne 0x478c2b
mov edi, dword [eax + 0x2d8]
mov ecx, esi
shl ecx, 5
mov edi, dword [edi + ecx]
dec edi
jmp 0x478c38
mov edi, dword [eax + 0x150]
lea ecx, [esi + esi*2]
mov edi, dword [edi + ecx*4 + 8]
mov ebx, dword [esp + 0x60]
xor ecx, ecx
cmp esi, ebx
mov esi, dword [esp + 0x5c]
setne cl
dec ecx
mov dword [esp + 0x20], edi
and esi, ecx
mov ecx, dword [esp + 0x74]
cmp ecx, 2
jne 0x478c9e
mov cx, word [edx]
cmp cx, 0x20
je 0x478c9e
cmp cx, 9
je 0x478c9e
mov ebx, dword [esp + 0x6c]
sub edi, esi
test ebx, ebx
mov eax, edi
je 0x478f65
lea ecx, [eax + eax]
lea esi, [edx + esi*2]
mov edx, dword [esp + 0x10]
mov ebp, ecx
shr ecx, 2
lea edi, [ebx + edx*2]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
add edx, eax
rep movsb byte es:[edi], byte [esi]
mov word [ebx + edx*2], 0
jmp 0x478f65
test esi, esi
jle 0x478d1d
mov ecx, dword [eax + 0x104]
xor ebp, ebp
test esi, esi
mov dword [esp + 0x2c], ecx
jle 0x478d1d
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], esi
jmp 0x478cc0
mov ecx, dword [esp + 0x2c]
mov ax, word [edx]
cmp ax, 9
jne 0x478cd4
mov eax, ebp
cdq
idiv ecx
sub ecx, edx
add ebp, ecx
jmp 0x478d07
test byte [0x536233], 1
jne 0x478d6e
push eax
mov eax, dword [0x5361f4]
push eax
call fcn.0044dcc0
mov ecx, dword [0x5361f4]
push 0x78
push ecx
mov ebx, eax
call fcn.0044dcc0
shl eax, 1
add esp, 0x10
cmp ebx, eax
jge 0x478d7a
inc ebp
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
add edx, 2
dec eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], eax
jne 0x478cbc
cmp esi, edi
jge 0x478f69
mov edx, dword [esp + 0x14]
mov edi, ebp
mov dword [esp + 0x24], esi
lea ebx, [edx + esi*2]
mov ax, word [ebx]
cmp ax, 0x20
je 0x478d41
cmp ax, 9
jne 0x478d98
cmp ax, 9
jne 0x478d7f
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x88]
mov eax, edi
cdq
mov ecx, dword [ecx + 0x104]
idiv ecx
sub ecx, edx
add edi, ecx
mov ecx, dword [esp + 0x24]
inc ecx
add ebx, 2
mov dword [esp + 0x24], ecx
jmp 0x478d32
cmp ax, 0x2e80
jb 0x478d06
cmp ax, 0xfad9
ja 0x478d06
add ebp, 2
jmp 0x478d07
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x70]
inc edi
inc ecx
mov dword [edx], 1
mov dword [esp + 0x24], ecx
add ebx, 2
jmp 0x478d32
cmp dword [esp + 0x24], esi
jle 0x478e4d
mov eax, dword [esp + 0x18]
mov ecx, edi
sub ecx, ebp
mov edx, dword [eax + 0x88]
mov eax, ebp
mov esi, dword [edx + 0x104]
cdq
idiv esi
sub esi, edx
cmp ecx, esi
jl 0x478e06
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
lea ebx, [ecx + eax*2]
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x478dd9
mov word [ebx], 9
mov edx, dword [esp + 0x10]
add ebp, esi
inc edx
mov ecx, edi
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x18]
sub ecx, ebp
add ebx, 2
mov eax, dword [edx + 0x88]
mov esi, dword [eax + 0x104]
mov eax, ebp
cdq
idiv esi
sub esi, edx
cmp ecx, esi
jge 0x478dcc
mov esi, dword [esp + 0x6c]
mov edx, ecx
dec ecx
test edx, edx
jle 0x478e32
mov edi, dword [esp + 0x10]
lea eax, [ecx + 1]
lea edx, [esi + edi*2]
add edi, eax
mov dword [esp + 0x10], edi
add ebp, eax
test esi, esi
je 0x478e2c
mov word [edx], 0x20
add edx, 2
dec eax
jne 0x478e23
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
cmp esi, eax
jge 0x478f69
cmp dword [esp + 0x74], 2
je 0x478f2b
mov eax, dword [esp + 0x14]
mov cl, byte [0x536233]
test cl, 1
mov ax, word [eax + esi*2]
jne 0x478eed
mov dword [esp + 0x28], eax
and eax, 0xffff
cmp word [eax*2 + 0x53623c], 0
jne 0x478ec0
mov eax, dword [0x5361f4]
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x2c]
push 1
push edx
push eax
call dword [0x4fd160]
mov eax, dword [0x536238]
test eax, eax
je 0x478ea9
mov ecx, dword [0x536220]
mov eax, dword [esp + 0x44]
sub eax, ecx
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x28]
mov ax, word [esp + 0x44]
and edx, 0xffff
mov word [edx*2 + 0x53623c], ax
mov ecx, dword [0x5361f4]
push 0x78
push ecx
call fcn.0044dcc0
mov edx, dword [esp + 0x30]
xor ecx, ecx
and edx, 0xffff
add esp, 8
shl eax, 1
mov cx, word [edx*2 + 0x53623c]
cmp ecx, eax
jge 0x478ef9
jmp 0x478efa
cmp ax, 0x2e80
jb 0x478efa
cmp ax, 0xfad9
ja 0x478efa
inc ebp
mov eax, dword [esp + 0x6c]
inc ebp
test eax, eax
je 0x478f13
mov edx, dword [esp + 0x14]
mov cx, word [edx + esi*2]
mov edx, dword [esp + 0x10]
mov word [eax + edx*2], cx
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
inc edx
inc esi
cmp esi, eax
mov dword [esp + 0x10], edx
jl 0x478d25
jmp 0x478f69
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x6c]
sub eax, esi
test edx, edx
je 0x478f65
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
lea ecx, [eax + eax]
mov ebp, ecx
lea esi, [edi + esi*2]
lea edi, [edx + ebx*2]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [eax + ebx]
mov word [edx + ecx*2], 0
add dword [esp + 0x10], eax
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x68]
cmp esi, edi
jge 0x479001
mov edx, dword [esp + 0x18]
lea eax, [esi + 1]
test eax, eax
mov ecx, dword [edx + 0x88]
je 0x478fe3
mov edx, dword [ecx + 0x98]
test edx, edx
je 0x478fbc
mov ecx, dword [ecx + 0x2a0]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*4]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x4c], eax
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
xor edx, edx
test eax, eax
setg dl
mov dword [esp + 0x54], ecx
mov eax, edx
jmp 0x478fdf
mov edx, dword [ecx + 0x74]
test edx, edx
je 0x478fe3
push eax
lea eax, [esp + 0x3c]
push eax
add ecx, 0x14c
call fcn.00455220
mov ecx, dword [esp + 0x3c]
xor eax, eax
test ecx, ecx
setg al
test eax, eax
jne 0x479001
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x478ffc
mov ecx, dword [esp + 0x10]
mov word [eax + ecx*2], 0xd
mov word [eax + ecx*2 + 2], 0xa
add dword [esp + 0x10], 2
inc esi
cmp esi, edi
mov dword [esp + 0x1c], esi
jle 0x478b39
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x1c