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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x476c
call fcn.0049fa60
push ebx
push esi
push edi
lea eax, [esp + 0x40]
xor esi, esi
mov dword [esp + 0x20], eax
mov eax, dword [str._UInt]
lea ecx, [esp + 0x88]
lea edx, [esp + 0x78]
push 0x21b
mov dword [esp + 0x9c], eax
mov dword [esp + 0x28], ecx
mov cx, word [0x4afe54]
mov dword [esp + 0x2c], edx
mov dl, byte [0x4afe56]
lea eax, [esp + 0xa3]
mov edi, 1
push esi
push eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x54], 4
mov dword [esp + 0x9c], edi
mov dword [esp + 0x8c], edi
mov word [esp + 0xa8], cx
mov byte [esp + 0xaa], dl
call fcn.0049a020
add esp, 0xc
push 0x34
mov dword [esp + 0x40], esi
call fcn.004943b7
add esp, 4
cmp eax, esi
je 0x477a42
mov dword [eax + 4], edi
mov dword [eax], vtable.Struct.0
mov dword [eax + 8], esi
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], esi
mov dword [eax + 0x14], esi
mov byte [eax + 0x18], 0
mov dword [eax + 0x1c], esi
mov dword [eax + 0x20], esi
mov dword [eax + 0x24], 0xffff0101
mov dword [eax + 0x28], esi
mov dword [eax + 0x2c], esi
mov dword [eax + 0x30], esi
mov ebx, eax
mov dword [esp + 0x14], eax
jmp 0x477a48
xor ebx, ebx
mov dword [esp + 0x14], ebx
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov ecx, dword [eax + 8]
cmp ecx, 6
je 0x477a78
cmp ecx, 4
jne 0x477aaf
mov eax, dword [eax]
cmp byte [eax + 0x17], 0
jne 0x477a67
mov ecx, dword [eax + 0xc]
jmp 0x477a69
mov ecx, eax
test byte [ecx + 0x15], 2
je 0x477a97
cmp byte [eax + 0x17], 0
jne 0x477a78
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
cmp eax, esi
je 0x477aaf
mov edx, dword [ebx]
mov eax, dword [edx + 8]
push ebx
call eax
mov eax, dword [edi]
mov ecx, dword [eax + 8]
cmp ecx, 6
jne 0x477aea
mov eax, dword [eax]
jmp 0x477b2b
cmp byte [eax + 0x17], 0
jne 0x477aa2
mov ecx, dword [eax + 0xc]
jmp 0x477aa4
mov ecx, eax
test byte [ecx + 0x15], 4
je 0x477aaf
call fcn.00433620
mov edi, dword [ebp + 0xc]
mov edx, dword [ebx + 8]
sar edi, 1
lea ecx, [edi + edi*8]
add ecx, ecx
add ecx, ecx
push ecx
push edx
call fcn.004924ea
add esp, 8
test eax, eax
je 0x477ad2
mov dword [ebx + 8], eax
mov dword [ebx + 0x10], edi
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
cmp ecx, 5
ja case.0x477ae3.1
jmp dword [ecx*4 + 0x4789ac]
cmp ecx, 4
jne 0x477b29
mov eax, dword [eax]
cmp byte [eax + 0x17], 0
jne 0x477afc
mov ecx, dword [eax + 0xc]
jmp 0x477afe
mov ecx, eax
test byte [ecx + 0x15], 2
je 0x477b11
cmp byte [eax + 0x17], 0
jne 0x477b0d
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
jmp 0x477b2b
cmp byte [eax + 0x17], 0
jne 0x477b1c
mov ecx, dword [eax + 0xc]
jmp 0x477b1e
mov ecx, eax
test byte [ecx + 0x15], 4
je 0x477b29
call fcn.00433620
xor eax, eax
push 0
mov ebx, eax
call fcn.00478e10
mov edi, eax
mov eax, dword [ebp + 0xc]
cmp eax, 2
jle 0x477b68
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 4]
push 0
call fcn.00455b80
mov dword [edi + 0x14], eax
mov ecx, dword [esi + 8]
add esp, 4
call fcn.00455e80
push edi
call fcn.004789d0
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 1
jle 0x477bbe
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 4]
call fcn.00455e80
test eax, eax
je 0x477ba5
mov ebx, dword [edi + 0x1c]
push ebx
call fcn.00491c09
mov dword [edi + 0x14], eax
mov dword [edi + 0x2c], ebx
mov ecx, dword [esi + 4]
add esp, 4
call fcn.00455e80
push edi
call fcn.004789d0
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 4]
push 0
call fcn.00455b80
mov dword [edi + 0x14], eax
add esp, 4
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [edi + 0x1c]
push esi
call fcn.00491c09
add esp, 4
push esi
push 0
push eax
mov dword [edi + 0x14], eax
mov dword [edi + 0x2c], esi
call fcn.0049a020
add esp, 0xc
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [eax]
cmp byte [eax + 0x17], 0
jne 0x477bf2
mov edi, dword [eax + 0xc]
jmp 0x477bf4
mov edi, eax
test byte [edi + 0x15], 8
je 0x477c01
mov eax, edi
call fcn.00401150
mov al, byte [edi + 0x17]
cmp al, 1
jne 0x477c1a
test byte [edi + 0x15], 4
je 0x477c15
mov eax, edi
call fcn.00433620
mov eax, dword [edi + 8]
jmp 0x477c2e
cmp al, 2
jne 0x477c25
call fcn.00401000
jmp 0x477c2e
mov eax, 0x4bd07e
jmp 0x477c2e
mov eax, dword [eax]
cmp byte [eax], 0
mov dword [esp + 0x18], eax
je case.0x477ae3.1
jmp 0x477c40
mov edi, dword [esp + 0x18]
push 2
push 0x4afe58
push edi
call fcn.0049401f
add esp, 0xc
test eax, eax
jne 0x477caa
mov bl, byte [edi]
mov esi, edi
test bl, bl
je 0x477c84
mov dl, bl
mov ecx, 0x4af658
mov al, 0xa
lea esp, [esp]
cmp dl, al
je 0x477ce0
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x477c70
mov dl, byte [esi + 1]
inc esi
test dl, dl
jne 0x477c62
mov eax, edi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x477c90
sub eax, edx
add eax, edi
cmp byte [eax], 0
mov dword [esp + 0x18], eax
je 0x478704
mov edi, eax
mov ebx, dword [esp + 0x18]
mov dl, byte [ebx]
test dl, dl
je 0x477cd4
mov ecx, str._n_r_t
mov al, 0xa
jmp 0x477cc0
cmp dl, al
je 0x477d13
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x477cc0
mov dl, byte [edi + 1]
inc edi
test dl, dl
jne 0x477cb4
xor eax, eax
cmp ebx, eax
jne 0x477d17
inc ebx
jmp 0x4786f3
mov esi, edi
test bl, bl
je 0x477d0b
mov dl, bl
jmp 0x477cf0
mov ecx, 0x4af658
mov al, 0xa
cmp dl, al
je 0x477d0f
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x477cf7
mov dl, byte [esi + 1]
inc esi
test dl, dl
jne 0x477cf0
xor eax, eax
jmp 0x477c9b
mov eax, esi
jmp 0x477c9b
mov eax, edi
jmp 0x477cd6
push 0x7b
push ebx
call fcn.00492af1
add esp, 8
test eax, eax
je 0x477df1
mov dl, byte [ebx]
mov esi, ebx
test dl, dl
je 0x477d73
mov ecx, 0x4afe64
mov al, 0x3b
lea esp, [esp]
cmp dl, al
je 0x477d56
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x477d40
mov dl, byte [esi + 1]
inc esi
test dl, dl
jne 0x477d32
jmp 0x477d73
push 0x7b
push ebx
call fcn.00492af1
mov esi, eax
add esp, 8
mov edi, 0x4afe64
mov eax, ebx
call fcn.0040a290
cmp esi, eax
jae 0x477df1
mov esi, dword [esp + 0x38]
mov ecx, esi
inc esi
mov dword [esp + 0x38], esi
test ecx, ecx
jne 0x477d86
mov dword [esp + 0x34], ecx
push str.struct
push ebx
call fcn.00492c32
add esp, 8
test eax, eax
je 0x477dbe
push str.struct
push ebx
call fcn.00492c32
push 0x7b
push ebx
mov edi, eax
call fcn.00492af1
add esp, 0x10
cmp edi, eax
jae 0x477dbe
mov byte [esp + esi + 0x2c0], 1
jmp 0x477dc6
mov byte [esp + esi + 0x2c0], 0
mov edx, dword [esp + 0x10]
push 0x7b
push ebx
mov dword [esp + esi*4 + 0x5e8], edx
mov dword [esp + esi*4 + 0x458], 0
call fcn.00492af1
add esp, 8
inc eax
mov dword [esp + 0x18], eax
jmp 0x4786f7
cmp byte [ebx], 0x7d
jne 0x477e81
mov edx, dword [esp + 0x38]
mov eax, dword [esp + edx*4 + 0x450]
mov ecx, dword [esp + 0x34]
cmp eax, ecx
jle 0x477e13
mov ecx, eax
mov dword [esp + 0x34], ecx
mov esi, dword [esp + 0x1c]
dec edx
mov dword [esp + 0x38], edx
jne 0x477e54
mov eax, ecx
cdq
idiv esi
test edx, edx
je 0x477e31
mov eax, esi
sub eax, edx
add ecx, eax
mov dword [esp + 0x34], ecx
cmp byte [esp + 0x2c1], 0
jne 0x477e41
add dword [esp + 0x10], ecx
jmp 0x477e5f
mov eax, dword [esp + 0x10]
cdq
idiv esi
test edx, edx
je 0x477e5f
sub esi, edx
add dword [esp + 0x10], esi
jmp 0x477e5f
mov ecx, dword [esp + edx*4 + 0x5e0]
mov dword [esp + 0x10], ecx
inc ebx
mov edi, 0x4afe64
mov eax, ebx
mov dword [esp + 0x18], ebx
call fcn.0040a290
cmp ebx, eax
jne 0x4786f7
inc dword [esp + 0x18]
jmp 0x4786f7
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
mov edi, 0x4afe70
mov eax, ebx
call fcn.0040a290
test eax, eax
je 0x477ecf
push edi
push ebx
call fcn.004958b3
mov esi, eax
add esp, 8
cmp esi, 0x4000
ja 0x47873f
push esi
lea edx, [esp + 0x774]
push ebx
push edx
call fcn.00494746
add esp, 0xc
mov byte [esp + esi + 0x770], 0
jmp 0x477efd
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x477ed4
sub eax, edx
cmp eax, 0x4000
ja 0x47875a
lea edx, [esp + 0x770]
mov eax, ebx
sub edx, ebx
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x477ef3
cmp byte [esp + 0x770], 0
je 0x477f50
lea eax, [esp + 0x770]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x477f11
sub eax, edx
lea eax, [esp + eax + 0x76f]
mov cl, byte [eax]
cmp cl, 0x20
je 0x477f2d
cmp cl, 9
jne 0x477f3b
lea ecx, [esp + 0x770]
cmp eax, ecx
je 0x477f41
dec eax
jmp 0x477f21
mov byte [eax + 1], 0
jmp 0x477f50
mov cl, byte [eax]
cmp cl, 0x20
je 0x477f4d
cmp cl, 9
jne 0x477f50
mov byte [eax], 0
lea edx, [esp + 0x770]
push 0x2a
push edx
call fcn.00492af1
add esp, 8
test eax, eax
je 0x477f91
push 0
push 0xffffffffffffffff
push 1
push 0x4a6869
lea eax, [esp + 0x780]
push 0x4ab36c
push eax
xor eax, eax
mov ecx, 0x4001
call fcn.0047e480
add esp, 0x18
mov dword [esp + 0x30], eax
lea ecx, [esp + 0x770]
push 0x5b
push ecx
call fcn.00492af1
add esp, 8
test eax, eax
je 0x47808f
lea edx, [esp + 0x770]
push 0x5b
push edx
call fcn.00492af1
push 0x14
push eax
lea eax, [esp + 0x70]
push eax
call fcn.00494746
add esp, 0x14
lea ecx, [esp + 0x60]
push 0x4afe74
push ecx
call fcn.004958b3
mov byte [esp + eax + 0x69], 0
add esp, 8
lea eax, [esp + 0x61]
call fcn.0040dbe0
test al, al
je 0x478001
push 0x10
lea edx, [esp + 0x65]
push 0
push edx
call fcn.004936cb
add esp, 0xc
jmp 0x47800e
lea eax, [esp + 0x61]
push eax
call fcn.00493091
add esp, 4
push 0
push 0xffffffffffffffff
push 1
push 0x4a6869
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x784]
mov dword [esp + 0x40], eax
push edx
xor eax, eax
mov ecx, 0x4001
call fcn.0047e480
add esp, 0x18
cmp byte [esp + 0x770], 0
je 0x47808f
lea eax, [esp + 0x770]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x478050
sub eax, edx
lea eax, [esp + eax + 0x76f]
mov cl, byte [eax]
cmp cl, 0x20
je 0x47806c
cmp cl, 9
jne 0x47807a
lea ecx, [esp + 0x770]
cmp eax, ecx
je 0x478080
dec eax
jmp 0x478060
mov byte [eax + 1], 0
jmp 0x47808f
mov cl, byte [eax]
cmp cl, 0x20
je 0x47808c
cmp cl, 9
jne 0x47808f
mov byte [eax], 0
mov edi, 0x4a80dc
lea eax, [esp + 0x770]
call fcn.0040a290
test eax, eax
jne 0x4780e8
mov edi, 0x4afe70
lea eax, [esp + 0x770]
call fcn.0040a290
test eax, eax
jne 0x4780e8
mov eax, ebx
call fcn.0040a290
test eax, eax
jne 0x4780ca
cmp dword [esp + 0x10], eax
je 0x4780e8
xor eax, eax
lea esp, [esp]
mov cl, byte [esp + eax + 0x770]
mov byte [esp + eax + 0x328], cl
inc eax
test cl, cl
jne 0x4780d0
jmp 0x4781aa
lea edx, [esp + 0x770]
push 0x4ab7b4
push edx
call fcn.004958b3
mov edi, eax
add esp, 8
cmp edi, 0x218
ja 0x47875a
push edi
lea eax, [esp + 0x774]
push eax
lea ecx, [esp + 0xa1]
push ecx
call fcn.00494746
mov byte [esp + edi + 0xa5], 0x20
mov byte [esp + edi + 0xa6], 0
add esp, 0xc
mov edi, 0x4a80dc
lea eax, [esp + 0x770]
call fcn.0040a290
test eax, eax
je 0x4781a2
lea eax, [esp + 0x770]
call fcn.0040a290
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x478158
sub eax, edx
cmp eax, 0x11b
ja 0x47875a
mov edi, 0x4a80dc
lea eax, [esp + 0x770]
call fcn.0040a290
inc eax
lea edx, [esp + 0x328]
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x478187
or eax, 0xffffffff
lea edi, [esp + 0x328]
call fcn.00416e50
jmp 0x4781aa
mov byte [esp + 0x328], 0
lea edx, [esp + 0x98]
push edx
call fcn.00480070
movsx esi, ax
xor ebx, ebx
add esp, 4
cmp esi, ebx
je 0x478331
lea eax, [esp + 0x98]
push str._bool
push eax
call fcn.00491ba1
add esp, 8
test eax, eax
jne 0x4781e3
lea esi, [ebx + 1]
mov edi, dword [esp + 0x30]
cmp edi, ebx
je 0x47822a
mov ecx, dword [esp + 0x10]
and ecx, 0x80000003
jns 0x4781fc
dec ecx
or ecx, 0xfffffffc
inc ecx
je 0x478219
mov eax, dword [esp + 0x2c]
cmp eax, ebx
jne 0x47820b
mov eax, 1
mov edx, 4
sub edx, ecx
imul edx, eax
add dword [esp + 0x10], edx
mov eax, 4
cmp dword [esp + 0x1c], eax
jge 0x478254
mov dword [esp + 0x1c], eax
jmp 0x478254
mov eax, dword [esp + 0x10]
cdq
idiv esi
cmp edx, ebx
je 0x47823d
mov eax, esi
sub eax, edx
add dword [esp + 0x10], eax
cmp esi, dword [esp + 0x1c]
jle 0x478254
mov dword [esp + 0x1c], 4
cmp esi, 4
jg 0x478254
mov dword [esp + 0x1c], esi
lea ecx, [esp + 0x98]
push ecx
mov eax, str._TCHAR_LPTSTR_LPCTSTR_LPWSTR_LPCWSTR_WCHAR
call fcn.0047e090
add esp, 4
test eax, eax
je 0x478274
mov ebx, 0x4b0
jmp 0x478292
lea edx, [esp + 0x98]
push edx
mov eax, str._CHAR_LPSTR_LPCSTR_LPSTR_UCHAR
call fcn.0047e090
add esp, 4
mov ebx, eax
neg ebx
sbb ebx, ebx
neg ebx
dec ebx
test edi, edi
je 0x47829d
mov edi, 1
jmp 0x4782b9
lea eax, [esp + 0x98]
push eax
mov eax, str._FLOAT_DOUBLE_PFLOAT_PDOUBLE
call fcn.0047e090
add esp, 4
mov edi, eax
neg edi
sbb edi, edi
inc edi
lea ecx, [esp + 0x98]
push ebx
push ecx
mov eax, str._PTR_SHORT_INT_INT64_CHAR_VOID_HALF_PTR_BOOL_INT32_LONG_LONG32_LONGLONG_LONG64_USN_INT_PTR_LONG_PTR_POINTER_64_POINTER_SIGNED_SSIZE_T_WPARAM___int64
call fcn.0047e090
mov ecx, dword [esp + 0x34]
add esp, 4
mov ebx, dword [esp + 0x40]
test eax, eax
sete dl
movzx eax, dl
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x38]
push edi
mov edi, dword [esp + 0x20]
push esi
push 0
push ecx
push edx
push eax
lea ecx, [esp + 0x348]
push ecx
call fcn.0047b010
inc dword [esp + 0x3c]
test eax, eax
je 0x47875a
cmp dword [esp + 0x30], 0
je 0x478318
mov esi, 4
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x478325
mov eax, 1
imul eax, esi
add dword [esp + 0x10], eax
jmp 0x47862f
lea edx, [esp + 0x98]
push 0x28
push edx
mov dword [esp + 0x48], ebx
call fcn.00492af1
add esp, 8
test eax, eax
je 0x47843b
mov eax, dword [0x4b7468]
mov esi, dword [eax + 0x94]
lea ecx, [esp + 0x98]
push 0x4afe84
push ecx
call fcn.004958b3
add esp, 8
push ebx
dec eax
push eax
lea edx, [esp + 0xa1]
push edx
mov ecx, 0x4bd7e0
call fcn.00423260
mov ecx, dword [0x4b7468]
mov dword [ecx + 0x94], eax
cmp eax, ebx
je 0x478754
xor eax, eax
lea ebx, [ebx]
mov cl, byte [esp + eax + 0x99]
mov byte [esp + eax + 0x770], cl
inc eax
test cl, cl
jne 0x4783a0
lea eax, [esp + 0x770]
push 0x4afe84
push eax
call fcn.004958b3
lea eax, [esp + eax + 0x779]
lea edx, [esp + 0xa1]
add esp, 8
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x4783d8
lea ecx, [esp + 0x98]
push 0x29
push ecx
call fcn.00492af1
mov edx, 0x20
mov word [eax], dx
lea eax, [esp + 0xa0]
add esp, 8
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x478406
push ebx
push 2
sub eax, edx
push ebx
add eax, 0xfffffffe
push eax
lea eax, [esp + 0xa9]
push eax
mov ecx, 0x4bd7e0
call fcn.00424ec0
mov ecx, dword [0x4b7468]
mov dword [esp + 0x40], eax
mov dword [ecx + 0x94], esi
jmp 0x47847a
mov edx, dword [0x4b7468]
cmp dword [edx + 0x94], ebx
je 0x47847a
lea eax, [esp + 0x98]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x478453
push ebx
push 2
sub eax, edx
push ebx
add eax, 0xfffffffe
push eax
lea eax, [esp + 0xa9]
push eax
mov ecx, 0x4bd7e0
call fcn.00424ec0
mov dword [esp + 0x40], eax
cmp dword [esp + 0x40], ebx
jne 0x4784bf
lea eax, [esp + 0x98]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x478490
push ebx
push 1
sub eax, edx
push ebx
add eax, 0xfffffffe
push eax
lea ecx, [esp + 0xa9]
push ecx
mov ecx, 0x4bd7e0
call fcn.00424ec0
mov dword [esp + 0x40], eax
cmp eax, ebx
je 0x47875a
cmp dword [esp + 0x30], ebx
jne 0x478548
mov edx, dword [esp + 0x18]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4784d2
sub eax, esi
push eax
push edx
lea edx, [esp + 0x778]
push edx
call fcn.0049401f
add esp, 0xc
test eax, eax
jne 0x4784fe
cmp byte [esp + 0x328], bl
je 0x47876f
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 0x24]
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x1c]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 0x28]
push 3
mov dword [eax + 4], edx
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x40]
push eax
call fcn.00475200
add esp, 0x10
cmp dword [esp + 0x58], 1
jne 0x47875a
jmp 0x4785b6
mov ecx, dword [esp + 0x24]
mov dword [ecx], ebx
mov edx, dword [esp + 0x24]
push 1
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x58]
mov dword [edx + 4], ebx
push ecx
lea edx, [esp + 0x40]
push edx
call fcn.00475200
add esp, 0x10
cmp dword [esp + 0x58], 1
jne 0x47875a
mov ecx, dword [esp + 0x10]
and ecx, 0x80000003
jns 0x47858a
dec ecx
or ecx, 0xfffffffc
inc ecx
je 0x4785a7
mov eax, dword [esp + 0x2c]
cmp eax, ebx
jne 0x478599
mov eax, 1
mov edx, 4
sub edx, ecx
imul edx, eax
add dword [esp + 0x10], edx
mov eax, 4
cmp dword [esp + 0x1c], eax
jge 0x4785b6
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x14]
push 0xffff
push 1
push 1
push eax
mov eax, dword [esp + 0x40]
push ecx
push esi
push edx
push eax
lea ecx, [esp + 0x348]
push ecx
call fcn.0047b010
inc ebx
mov dword [esp + 0x3c], ebx
test eax, eax
je 0x47875a
cmp dword [esp + 0x30], 0
je 0x478613
test esi, esi
jne 0x47860a
mov esi, 1
mov edx, dword [esp + 0x10]
lea eax, [edx + esi*4]
jmp 0x47862b
test esi, esi
je 0x478625
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x10]
dec esi
imul eax, esi
jmp 0x478627
xor eax, eax
add eax, dword [esp + 0x50]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x478662
mov edx, dword [esp + ecx*4 + 0x5e0]
mov eax, dword [esp + 0x10]
sub eax, edx
cmp eax, dword [esp + ecx*4 + 0x450]
jle 0x478654
mov dword [esp + ecx*4 + 0x450], eax
cmp byte [esp + ecx + 0x2c0], 0
jne 0x478662
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 0x18]
push 0x7d
push ebx
call fcn.00492af1
add esp, 8
test eax, eax
je 0x4786ad
mov edi, 0x4afe64
mov eax, ebx
call fcn.0040a290
test eax, eax
je 0x47869d
push 0x7d
push ebx
call fcn.00492af1
mov esi, eax
add esp, 8
mov eax, ebx
call fcn.0040a290
cmp esi, eax
jae 0x4786ad
push 0x4a756c
push ebx
call fcn.004958b3
add esp, 8
jmp 0x4786f1
mov edi, 0x4afe64
mov eax, ebx
call fcn.0040a290
test eax, eax
je 0x4786d1
push edi
push ebx
call fcn.004958b3
lea edx, [ebx + eax + 1]
add esp, 8
mov dword [esp + 0x18], edx
jmp 0x4786f7
cmp byte [esp + 0x328], 0
jne 0x4786e3
mov eax, dword [esp + 0x14]
mov byte [eax + 0x18], 1
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4786e8
sub eax, edx
add ebx, eax
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 0x18]
cmp byte [ecx], 0
jne 0x477c40
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
cmp dword [esp + 0x1c], 0
je 0x478726
mov eax, esi
cdq
idiv dword [esp + 0x1c]
test edx, edx
je 0x478726
mov eax, dword [esp + 0x1c]
sub eax, edx
add esi, eax
test esi, esi
jne 0x47892f
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
push ebx
call ecx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ecx + 0x94], esi
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ecx, dword [ebp + 0xc]
cmp ecx, 1
jne 0x4787e0
mov ecx, dword [esp + 0x20]
call fcn.00455e80
test eax, eax
je 0x4787ca
mov ecx, dword [esp + 0x20]
push ebx
call fcn.00455e80
mov ebx, eax
call fcn.00478e10
mov esi, eax
mov edi, dword [esi + 0x1c]
push edi
call fcn.00491c09
add esp, 4
push edi
push 0
push eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x2c], edi
call fcn.0049a020
add esp, 0xc
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x20]
push 1
push eax
call fcn.00477960
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 8]
jle 0x47881d
mov edx, dword [edi + 4]
mov eax, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx + 8], eax
mov eax, dword [edi + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x24]
mov dword [eax], edx
mov eax, dword [edi + 4]
mov edx, dword [eax]
mov esi, dword [esp + 0x24]
mov dword [esi], edx
mov eax, dword [eax + 4]
mov edx, dword [esp + 0x24]
mov dword [edx + 4], eax
mov eax, dword [edi + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x24]
mov dword [eax], edx
cmp ecx, 2
jle 0x4788a6
mov ecx, dword [edi + 8]
mov edx, dword [ecx + 8]
mov eax, dword [esp + 0x28]
mov dword [eax + 8], edx
mov ecx, dword [edi + 8]
mov edx, dword [ecx]
mov eax, dword [esp + 0x28]
mov dword [eax], edx
mov ecx, dword [edi + 8]
mov edx, dword [ecx]
mov eax, dword [esp + 0x28]
mov dword [eax], edx
mov ecx, dword [esp + 0x20]
call fcn.00455e80
test eax, eax
je 0x478890
mov ecx, dword [esp + 0x20]
push 0
call fcn.00455e80
mov ebx, eax
call fcn.00478e10
mov esi, eax
mov dword [esi + 0x2c], 0
mov ecx, dword [edi + 4]
mov edx, dword [ecx]
mov dword [esi + 0x14], edx
mov ecx, dword [edi + 8]
call fcn.00455e80
push esi
call fcn.004789d0
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x20]
push 3
push eax
call fcn.00477960
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x20]
call fcn.00455e80
test eax, eax
je 0x478919
mov ecx, dword [esp + 0x20]
push 0
call fcn.00455e80
mov ebx, eax
call fcn.00478e10
mov ecx, dword [edi + 4]
mov esi, eax
call fcn.00455e80
test eax, eax
je 0x478908
mov ebx, dword [esi + 0x1c]
push ebx
call fcn.00491c09
add esp, 4
push ebx
push 0
push eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x2c], ebx
call fcn.0049a020
mov ecx, dword [edi + 4]
add esp, 0xc
call fcn.00455e80
push esi
call fcn.004789d0
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 4]
mov edx, dword [ecx]
mov dword [esi + 0x14], edx
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x20]
push 2
push eax
call fcn.00477960
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0xc], 1
mov edi, dword [ebp + 8]
mov dword [ebx + 0x1c], esi
jle 0x478960
mov eax, dword [edi + 4]
call fcn.00455a40
test eax, eax
je 0x478960
mov ecx, dword [edi + 4]
push 0
call fcn.00455b80
add esp, 4
mov dword [ebx + 0x14], eax
mov dword [ebx + 0x2c], 0
jmp 0x47897b
push esi
call fcn.00491c09
add esp, 4
push esi
push 0
push eax
mov dword [ebx + 0x14], eax
mov dword [ebx + 0x2c], esi
call fcn.0049a020
add esp, 0xc
mov esi, dword [ebp + 0xc]
cmp esi, 1
jle 0x47898f
mov eax, dword [edi + 4]
call fcn.00455a40
test eax, eax
je 0x478994
cmp esi, 2
jle 0x4789a3
mov ecx, dword [edi + esi*4 - 4]
call fcn.00455e80
push ebx
call fcn.004789d0
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret