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

Disassembly:
sub esp, 0x90
mov ecx, dword [esp + 0x94]
mov edx, dword [ecx]
xor eax, eax
cmp dword [esp + 0xac], eax
push ebx
push ebp
mov ebp, dword [ecx + 8]
push esi
push edi
mov edi, dword [esp + 0xa8]
movsx ecx, word [edi + 0x22]
mov dword [esp + 0x2c], edx
mov edx, dword [edi + 0x1c]
setne byte [esp + 0x12]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x40], eax
mov byte [esp + 0x13], al
mov dword [esp + 0x4c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x3c], ecx
test dl, dl
js 0x46f8d4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x5c], 1
jmp 0x46f8e7
mov eax, edi
call fcn.004141a0
mov dword [esp + 0x1c], eax
movzx eax, word [eax + 0x32]
mov dword [esp + 0x5c], eax
test edx, 0x800
je 0x46faef
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
xor ecx, ecx
cmp dword [esp + 0x3c], ecx
mov dword [esp + 0x18], ecx
jle 0x46fa9d
mov dword [esp + 0x14], ecx
mov esi, dword [edi + 4]
add esi, dword [esp + 0x14]
mov ebx, dword [esi + 4]
and ebx, 0xf
je 0x46fa85
movsx edx, word [edi + 0x20]
cmp ecx, edx
je 0x46fa85
movzx eax, word [esi + 0xe]
and eax, 0x60
je 0x46f94d
cmp dword [esp + 0x28], 0
jne 0x46f94d
inc dword [esp + 0x24]
jmp 0x46fa85
mov edx, dword [esp + 0xd0]
test edx, edx
je 0x46f966
cmp dword [edx + ecx*4], 0
jge 0x46f966
test eax, eax
je 0x46fa85
mov cl, byte [esp + 0xc4]
cmp cl, 0xb
je 0x46f98f
movzx ebx, cl
cmp ebx, 5
jne 0x46f999
cmp dword [esp + 0x28], 0
jne 0x46f988
cmp word [esi + 0xc], 0
jne 0x46f9a8
mov ebx, 2
jmp 0x46f9a8
cmp ebx, 0xb
jne 0x46f975
mov ebx, 2
cmp dword [esp + 0x28], 0
je 0x46f9a8
test eax, eax
je 0x46fa85
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0xa8]
call fcn.00414220
mov ecx, dword [esp + 0xb8]
cwde
lea edi, [eax + ecx + 1]
lea eax, [ebx - 1]
cmp eax, 4
ja case.0x46f9d0.4
jmp dword [eax*4 + 0x4709a8]
push ebp
mov eax, edi
mov ecx, 0x33
call fcn.0043a290
inc dword [esp + 0x24]
add esp, 4
mov ebx, eax
mov eax, dword [esp + 0xa8]
push edi
mov ecx, esi
call fcn.00414120
mov edx, dword [esp + 0xa8]
push edx
call fcn.0044c250
push ebx
mov ecx, ebp
call fcn.0041cdc0
add esp, 0xc
jmp 0x46fa7e
mov ecx, dword [esp + 0xa4]
call fcn.00414a70
mov eax, dword [esi]
mov ecx, dword [esp + 0xa8]
mov edx, dword [ecx]
mov esi, dword [esp + 0x2c]
push eax
push edx
push str._s._s
call fcn.0042aec0
push edi
push ebx
push 0x513
push 0x45
push ebp
mov esi, eax
call fcn.0043a200
push 0xfffffffffffffffa
mov ecx, esi
mov edx, ebp
call fcn.0041d040
add esp, 0x24
mov edx, 1
mov ecx, ebp
call fcn.00411050
jmp 0x46fa7e
mov eax, dword [esp + 0xc8]
push 0x32
push ebp
mov ecx, edi
call fcn.0043a2b0
add esp, 8
mov edi, dword [esp + 0xa8]
mov ecx, dword [esp + 0x18]
add dword [esp + 0x14], 0x10
inc ecx
cmp ecx, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
jl 0x46f915
cmp dword [esp + 0x24], 0
jne 0x46faab
cmp dword [esp + 0x20], 0
je 0x46faef
cmp dword [esp + 0x28], 0
jne 0x46faef
cmp dword [esp + 0x20], 0
mov dword [esp + 0x28], 1
jle 0x46f901
test byte [edi + 0x1c], 0x60
je 0x46f901
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xa4]
inc eax
push eax
push ecx
mov eax, edi
call fcn.00458c80
add esp, 8
jmp 0x46f901
mov eax, dword [edi + 0x10]
xor ecx, ecx
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x46fc7c
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x20]
and eax, 0x200
or eax, ecx
jne 0x46fc7c
mov ecx, dword [esp + 0xa4]
or eax, 0xffffffff
sub eax, dword [esp + 0xb8]
mov dword [ecx + 0x34], eax
mov al, byte [esp + 0xc4]
movzx edi, al
cmp al, 0xb
jne 0x46fb3b
mov edi, 2
mov edx, dword [esp + 0x14]
cmp dword [edx], 0
mov dword [esp + 0x18], 0
jle 0x46fc65
mov ebx, dword [esp + 0xd0]
mov eax, edx
add eax, 0xc
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x20]
mov esi, dword [ecx - 4]
test ebx, ebx
je 0x46fb88
movzx edx, byte [esp + 0xc0]
push edx
mov ecx, ebx
mov edx, esi
call fcn.004247e0
add esp, 4
test eax, eax
je 0x46fc4b
cmp byte [esp + 0x13], 0
jne 0x46fbae
mov eax, dword [esp + 0xb8]
inc eax
push eax
mov eax, dword [esp + 0xac]
mov ecx, ebp
call fcn.0043dec0
add esp, 4
mov byte [esp + 0x13], 1
mov eax, dword [esp + 0xa4]
call fcn.00410ed0
mov ecx, dword [esp + 0x2c]
push 0
push esi
push ecx
mov ebx, eax
call fcn.0044ba90
mov edx, dword [esp + 0x38]
add esp, 0xc
cmp byte [edx + 0x57], 0
mov esi, eax
jne 0x46fbec
mov eax, dword [esp + 0xa4]
push 0x10
push ebx
push esi
push eax
call fcn.004693b0
add esp, 0x10
mov ecx, dword [esp + 0x2c]
push esi
push ecx
call fcn.00423720
add esp, 8
cmp edi, 4
jne 0x46fc0f
mov eax, dword [esp + 0xc8]
mov ecx, ebp
call fcn.0043a2d0
jmp 0x46fc3b
mov edx, dword [esp + 0x20]
mov eax, dword [edx]
cmp edi, 5
jne 0x46fc1f
mov edi, 2
push 3
push 0
push eax
mov eax, dword [esp + 0xb0]
push 0x113
push eax
mov esi, edi
call fcn.004485f0
add esp, 0x14
mov ecx, ebx
mov edx, ebp
call fcn.00422330
mov ebx, dword [esp + 0xd0]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
add dword [esp + 0x20], 0x14
inc eax
cmp eax, dword [ecx]
mov dword [esp + 0x18], eax
jl 0x46fb60
mov edx, dword [esp + 0xa4]
mov edi, dword [esp + 0xa8]
mov dword [edx + 0x34], 0
xor ecx, ecx
mov ebx, dword [esp + 0xd4]
mov eax, dword [edi + 8]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], eax
cmp ebx, ecx
je 0x46fda6
cmp dword [ebx], 0
jne 0x46fcd7
cmp byte [ebx + 0x14], 0
jne 0x46fcca
mov byte [esp + 0xc4], 4
mov dword [esp + 0xd4], 0
jmp 0x46fda6
mov byte [esp + 0xc4], 6
jmp 0x46fda6
test eax, eax
je 0x46fda6
xor esi, esi
mov eax, dword [eax + 0x14]
inc esi
test eax, eax
jne 0x46fce1
mov ecx, dword [esp + 0x2c]
lea eax, [esi + esi*4]
add eax, eax
push 0
push eax
mov dword [esp + 0x84], 1
mov dword [esp + 0x8c], esi
call fcn.00425bb0
add esp, 8
mov dword [esp + 0x88], eax
test eax, eax
je 0x47099b
lea ecx, [eax + esi*8]
mov dword [esp + 0x14], ecx
mov dword [ebx + 0x18], eax
xor esi, esi
mov edi, ebx
lea esp, [esp]
cmp dword [edi], 0
je 0x46fd79
mov ebx, dword [edi + 0x1c]
test ebx, ebx
je 0x46fd72
mov ecx, dword [esp + 0xa8]
mov ecx, dword [ecx + 8]
xor edx, edx
test ecx, ecx
je 0x46fd5c
lea esp, [esp]
cmp ecx, ebx
je 0x46fd5c
mov ecx, dword [ecx + 0x14]
inc edx
test ecx, ecx
jne 0x46fd50
mov ebx, dword [esp + 0x14]
cmp byte [edx + ebx], 0
jne 0x46fd72
mov byte [edx + ebx], 1
mov dword [eax + esi*8], ecx
mov dword [eax + esi*8 + 4], edx
inc esi
mov edi, dword [edi + 0x10]
test edi, edi
jne 0x46fd30
mov ecx, dword [esp + 0xa8]
mov ecx, dword [ecx + 8]
xor edx, edx
test ecx, ecx
je 0x46fda6
lea eax, [eax + esi*8]
mov esi, dword [esp + 0x14]
cmp byte [edx + esi], 0
jne 0x46fd9e
mov dword [eax], ecx
mov dword [eax + 4], edx
add eax, 8
mov ecx, dword [ecx + 0x14]
inc edx
test ecx, ecx
jne 0x46fd90
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 0x24]
mov ecx, dword [eax + 0x20]
mov eax, ecx
mov dword [esp + 0x68], edx
and eax, 0x6000
xor edx, edx
xor esi, esi
or eax, edx
jne 0x46fdd2
mov dword [esp + 0x3c], esi
mov dword [esp + 0x30], esi
mov ebx, esi
jmp 0x46fe74
and ecx, 0x2000
xor eax, eax
or ecx, eax
je 0x46fe1d
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0xa4]
push eax
push eax
push 0x80
call fcn.00430020
add esp, 0xc
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x46fe45
push eax
push esi
xor ecx, ecx
mov eax, edi
call fcn.0041ea80
add esp, 8
test eax, eax
jne 0x46fe45
mov dword [esp + 0x30], eax
mov ebx, eax
jmp 0x46fe74
mov eax, dword [esp + 0xa8]
push esi
push eax
mov eax, dword [esp + 0xac]
xor ecx, ecx
mov dword [esp + 0x44], esi
call fcn.0041ea80
mov ebx, eax
add esp, 8
mov dword [esp + 0x30], ebx
cmp ebx, esi
je 0x46fe74
mov edi, dword [esp + 0xa4]
inc dword [edi + 0x2c]
mov ebx, dword [edi + 0x2c]
push 0x47
push ebp
mov eax, ebx
xor ecx, ecx
mov dword [esp + 0x38], ebx
call fcn.0043a2b0
add esp, 8
mov eax, edi
call fcn.00410ed0
mov dword [esp + 0x44], eax
mov dword [esp + 0x50], eax
cmp byte [esp + 0xc0], 0
mov edi, dword [esp + 0xb0]
je 0x4700dc
cmp dword [esp + 0x1c], 0
jne 0x4700dc
mov eax, dword [esp + 0xa4]
call fcn.00410ed0
mov ecx, dword [esp + 0xa8]
movzx esi, byte [ecx + 0x2a]
mov dword [esp + 0x14], eax
mov al, byte [esp + 0xc4]
cmp al, 0xb
je 0x46febf
movzx esi, al
jmp 0x46fec9
cmp esi, 0xb
jne 0x46fec9
mov esi, 2
mov edx, dword [esp + 0xd4]
test edx, edx
je 0x46ff05
xor ecx, ecx
mov eax, edx
call fcn.00416200
mov dword [esp + 0x40], eax
test eax, eax
je 0x46fef1
cmp byte [eax + 0x14], cl
setne cl
lea ecx, [ecx + ecx + 4]
mov esi, ecx
cmp eax, edx
je 0x46ff05
mov eax, 9
mov ecx, ebp
call fcn.0043a270
mov dword [esp + 0x54], eax
cmp esi, 5
jne 0x46ff37
cmp byte [esp + 0xc4], 5
je 0x46ff37
mov edx, dword [esp + 0xa8]
cmp dword [edx + 8], 0
je 0x46ff37
cmp dword [esp + 0x54], 0
jne 0x46ff37
lea eax, [esi + 4]
mov ecx, ebp
call fcn.0043a270
inc eax
mov dword [esp + 0x70], eax
cmp byte [esp + 0x12], 0
je 0x46ff6a
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0xb8]
push eax
push ecx
push edx
push 0x35
push ebp
call fcn.0043a200
add esp, 0x14
mov edx, 0x90
mov ecx, ebp
call fcn.00411050
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x14]
push eax
push ecx
push edi
push 0x1f
push ebp
call fcn.0043a200
lea eax, [esi - 1]
add esp, 0x14
cmp eax, 5
ja case.default.0x46ff8f
jmp dword [eax*4 + 0x4709bc]
test ebx, ebx
je 0x46fffb
mov ecx, dword [esp + 0xa4]
call fcn.00414a50
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb4]
push 0xffffffffffffffff
push 1
push 5
push 0
push 1
push edx
mov edx, dword [esp + 0x54]
push eax
mov eax, dword [esp + 0xc4]
push edi
push edx
push eax
push ecx
call fcn.00471e80
push 0x56
push ebp
mov eax, 1
mov ecx, ebx
call fcn.0043a2b0
add esp, 0x34
mov dword [esp + 0x58], 1
mov dword [esp + 0x6c], 1
jmp 0x47008a
mov ecx, dword [esp + 0xa8]
cmp dword [ecx + 8], 0
je 0x470031
mov ecx, dword [esp + 0xa4]
call fcn.00414a50
mov edx, dword [esp + 0xb4]
mov eax, dword [esp + 0xa8]
push 0xffffffffffffffff
push 0
push edx
push edi
push ecx
call fcn.00463970
add esp, 0x14
mov dword [esp + 0x6c], 1
jmp 0x47008a
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xa4]
push edi
push 0
push eax
push ecx
push edx
call fcn.0046f680
add esp, 0x14
mov eax, dword [esp + 0xc8]
mov ecx, ebp
call fcn.0043a2d0
jmp 0x47008a
mov esi, 2
mov eax, dword [esp + 0xa8]
mov edi, dword [esp + 0xa4]
push esi
call fcn.00448730
add esp, 4
mov ecx, dword [esp + 0x14]
mov edx, ebp
call fcn.00422330
mov eax, dword [esp + 0xd4]
test eax, eax
je 0x4700b8
cmp dword [esp + 0x40], eax
je 0x4700b8
mov eax, 9
mov ecx, ebp
call fcn.0043a270
mov dword [esp + 0x4c], eax
jmp 0x4700dc
mov esi, dword [esp + 0x70]
test esi, esi
je 0x4700dc
mov eax, 9
mov ecx, ebp
call fcn.0043a270
dec esi
push esi
mov ecx, ebp
mov dword [esp + 0x78], eax
call fcn.0041cdc0
add esp, 4
lea ecx, [esp + 0x14]
lea eax, [esp + 0x7c]
call fcn.00415390
mov ebx, eax
mov dword [esp + 0x38], ebx
test ebx, ebx
je 0x47086d
jmp 0x470100
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0xac]
cmp dword [eax + esi*4], 0
mov edx, dword [esp + 0xd4]
mov edi, dword [esp + 0xa4]
je 0x470852
test edx, edx
je 0x47014b
mov ecx, ebx
mov eax, edx
call fcn.00416200
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x40], eax
test ecx, ecx
je 0x47014b
cmp eax, edx
jne 0x47014b
push ecx
mov ecx, ebp
call fcn.0041cdc0
add esp, 4
mov eax, edi
call fcn.00410ed0
cmp byte [esp + 0x13], 0
mov dword [esp + 0x34], eax
jne 0x47017c
mov ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0xa8]
inc ecx
push ecx
mov ecx, ebp
call fcn.0043dec0
add esp, 4
mov byte [esp + 0x13], 1
cmp dword [ebx + 0x24], 0
mov edx, dword [esp + 0xb4]
lea eax, [esi + edx]
mov dword [esp + 0x20], eax
je 0x4701cb
mov ecx, dword [esp + 0xac]
mov eax, dword [ecx + esi*4]
push 0x4b
push ebp
xor ecx, ecx
call fcn.0043a2b0
mov eax, dword [esp + 0x3c]
or edx, 0xffffffff
sub edx, dword [esp + 0xc0]
push 0x10
push eax
mov dword [edi + 0x34], edx
mov eax, dword [ebx + 0x24]
push edi
call fcn.0044c410
add esp, 0x14
mov dword [edi + 0x34], 0
mov ecx, dword [esp + 0xac]
mov eax, dword [ecx + esi*4]
inc eax
xor edx, edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], 0
cmp dx, word [ebx + 0x34]
jae 0x4702a7
mov esi, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], edx
jmp 0x470200
mov ecx, dword [ebx + 4]
movsx eax, word [ecx + eax*2]
cmp eax, 0xfffffffe
jne 0x470234
mov ecx, dword [esp + 0x24]
or edx, 0xffffffff
sub edx, dword [esp + 0xb8]
push esi
mov dword [edi + 0x34], edx
mov eax, dword [ebx + 0x28]
mov eax, dword [eax + ecx + 8]
push edi
call fcn.0044c250
mov dword [edi + 0x34], 0
jmp 0x470281
cmp eax, 0xffffffff
je 0x470270
mov edx, dword [esp + 0xa8]
movsx ecx, word [edx + 0x20]
cmp eax, ecx
je 0x470270
mov edi, edx
call fcn.00414220
movsx edx, ax
mov eax, dword [esp + 0xb8]
lea ecx, [edx + eax + 1]
push 0x51
push ebp
mov eax, esi
call fcn.0043a2b0
mov edi, dword [esp + 0xac]
jmp 0x470281
mov ecx, dword [esp + 0xb8]
push 0x52
push ebp
mov eax, esi
call fcn.0043a2b0
mov eax, dword [esp + 0x20]
movzx ecx, word [ebx + 0x34]
add dword [esp + 0x2c], 0x14
inc eax
add esp, 8
inc esi
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x470200
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0xac]
mov ecx, dword [edx + esi*4]
movzx edx, word [ebx + 0x34]
push ecx
push edx
push eax
push 0x61
push ebp
call fcn.0043a200
add esp, 0x14
cmp byte [esp + 0x12], 0
je 0x4702ea
cmp dword [esp + 0x1c], ebx
jne 0x4702ea
cmp byte [esp + 0xc0], 0
jne 0x4702ea
mov ecx, dword [esp + 0x34]
mov edx, ebp
call fcn.00422330
jmp 0x470852
movzx eax, byte [ebx + 0x36]
mov dword [esp + 0x48], eax
test eax, eax
jne 0x470306
mov ecx, dword [esp + 0x34]
mov edx, ebp
call fcn.00422330
jmp 0x470852
mov cl, byte [esp + 0xc4]
cmp cl, 0xb
je 0x470317
movzx eax, cl
jmp 0x470321
cmp eax, 0xb
jne 0x470325
mov eax, 2
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x47033d
xor eax, eax
cmp byte [ecx + 0x14], al
setne al
lea eax, [eax + eax + 4]
mov dword [esp + 0x48], eax
test esi, esi
jne 0x4703da
cmp dword [ebx + 0x14], esi
jne 0x4703da
cmp dword [esp + 0x1c], ebx
jne 0x4703da
cmp eax, 5
jne 0x4703da
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x20]
and ecx, 0x2000
mov dword [esp + 0x64], ecx
mov eax, esi
jne 0x470376
test eax, eax
je 0x470399
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0xa4]
push 0
push 0
push 0x80
call fcn.00430020
add esp, 0xc
test eax, eax
jne 0x4703da
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x20]
and eax, 0x4000
mov dword [esp + 0x64], eax
mov eax, 0
jne 0x4703b4
test eax, eax
je 0x4703ca
mov eax, dword [esp + 0xa8]
cmp dword [eax + 0x30], 0
jne 0x4703da
call fcn.004151c0
test eax, eax
jne 0x4703da
mov ecx, dword [esp + 0x34]
mov edx, ebp
call fcn.00422330
jmp 0x470852
movzx ecx, word [ebx + 0x32]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x38]
push edx
push 0x1b
mov eax, edi
mov esi, ebp
call fcn.0043a4c0
add esp, 0xc
mov dword [esp + 0x24], eax
cmp ebx, dword [esp + 0x1c]
jne 0x47040a
mov dword [esp + 0x18], edi
jmp 0x47041e
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0xa4]
call fcn.00413970
mov dword [esp + 0x18], eax
cmp byte [esp + 0x12], 0
jne 0x470434
cmp dword [esp + 0x48], 5
jne 0x4705c6
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0xa8]
test byte [eax + 0x1c], 0x80
jne 0x470490
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
push 0x8e
push ebp
call fcn.0043a2b0
add esp, 8
cmp byte [esp + 0x12], 0
je 0x4705c6
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x18]
push ecx
push edx
push eax
push 0x35
push ebp
call fcn.0043a200
add esp, 0x14
mov edx, 0x90
mov ecx, ebp
call fcn.00411050
jmp 0x4705c6
cmp ebx, dword [esp + 0x1c]
je 0x4704dc
mov edx, dword [esp + 0x1c]
xor ecx, ecx
xor edi, edi
cmp cx, word [edx + 0x32]
jae 0x4704dc
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x18]
mov si, word [edx + edi*2]
add eax, edi
push eax
mov edx, ebx
call fcn.004141c0
mov ecx, dword [esp + 0x24]
cwde
push eax
push ecx
push 0x5e
push ebp
call fcn.0043a200
mov edx, dword [esp + 0x30]
movzx eax, word [edx + 0x32]
inc edi
add esp, 0x14
cmp edi, eax
jl 0x4704a4
cmp byte [esp + 0x12], 0
je 0x4705c6
mov ecx, dword [esp + 0x1c]
movzx ecx, word [ecx + 0x32]
mov eax, ebp
call fcn.00411010
mov edx, dword [esp + 0x38]
add eax, ecx
mov dword [esp + 0x64], eax
mov eax, dword [edx + 0x38]
and al, 3
mov dword [esp + 0x60], 0x34
cmp al, 2
jne 0x47051b
mov edx, dword [esp + 0x28]
mov dword [esp + 0x78], edx
jmp 0x470523
mov eax, dword [esp + 0x18]
mov dword [esp + 0x78], eax
xor ebx, ebx
test ecx, ecx
jle 0x4705c6
lea ecx, [ecx]
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0x20]
mov esi, dword [edx + ebx*4]
mov edi, dword [esp + 0xa4]
call fcn.00443670
mov edx, dword [esp + 0x1c]
mov ecx, dword [edx + 4]
movzx edx, word [edx + 0x32]
movsx ecx, word [ecx + ebx*2]
dec edx
cmp ebx, edx
jne 0x47056a
mov edx, dword [esp + 0x34]
mov dword [esp + 0x64], edx
mov dword [esp + 0x60], 0x35
mov edi, dword [esp + 0xa8]
push 0xfffffffffffffffe
push eax
mov eax, dword [esp + 0x80]
lea esi, [eax + ebx]
mov eax, ecx
call fcn.00414220
mov edx, dword [esp + 0xc4]
movsx ecx, ax
lea eax, [ecx + edx + 1]
mov ecx, dword [esp + 0x68]
push eax
push ecx
mov ecx, dword [esp + 0x74]
mov eax, esi
mov edi, ebp
call fcn.0043a2f0
add esp, 0x10
mov edx, 0x90
mov ecx, ebp
call fcn.00411050
mov edx, dword [esp + 0x1c]
movzx eax, word [edx + 0x32]
inc ebx
cmp ebx, eax
jl 0x470530
mov eax, dword [esp + 0x48]
lea ecx, [eax - 1]
cmp ecx, 5
ja case.0x4705d2.5
jmp dword [ecx*4 + 0x4709d4]
mov ecx, dword [esp + 0xa4]
mov edi, dword [esp + 0x38]
push eax
push ecx
call fcn.00448640
add esp, 8
jmp 0x4707eb
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xa8]
push edx
mov edx, dword [esp + 0xd8]
push eax
mov eax, dword [esp + 0xac]
push ecx
push edx
push eax
call fcn.0046f680
add esp, 0x14
mov eax, dword [esp + 0xc8]
mov ecx, ebp
call fcn.0043a2d0
jmp 0x4707eb
mov eax, ebp
call fcn.00411010
mov ebx, eax
sub ebx, dword [esp + 0x24]
cmp dword [esp + 0x30], 0
mov dword [esp + 0x64], ebx
je 0x470658
mov ecx, dword [esp + 0xa4]
call fcn.00414a50
inc dword [esp + 0x58]
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x47067c
cmp byte [esp + 0x12], 0
je 0x47067c
mov eax, dword [esp + 0xb0]
push ebp
mov ecx, 0xa7
call fcn.0043a290
add esp, 4
mov edi, dword [esp + 0x38]
cmp edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x60]
sete dl
movzx eax, dl
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0xbc]
push 5
push 0
push ecx
mov ecx, dword [esp + 0xc4]
push edx
mov edx, dword [esp + 0xc0]
push eax
mov eax, dword [esp + 0xc0]
push ecx
push esi
push edx
push eax
call fcn.00471e80
add esp, 0x2c
test esi, esi
je 0x4706e7
cmp byte [esp + 0x12], 0
je 0x4706e7
mov eax, dword [esp + 0xb0]
push ebp
mov ecx, 0xa8
call fcn.0043a290
add esp, 4
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x4707e3
push 0x56
push ebp
mov eax, 1
call fcn.0043a2b0
add esp, 8
mov eax, 9
mov ecx, ebp
call fcn.0043a270
mov ecx, dword [esp + 0x44]
mov edx, ebp
mov dword [esp + 0x60], eax
call fcn.00422330
mov eax, dword [esp + 0xa4]
call fcn.00410ed0
cmp dword [edi + 0x24], 0
mov dword [esp + 0x44], eax
je 0x470744
mov ecx, dword [esp + 0x28]
push 0x32
dec ecx
push ebp
call fcn.0043a2b0
add esp, 8
test ebx, ebx
jle 0x4707c1
jmp 0x470750
mov eax, dword [esp + 0x24]
mov ecx, ebp
call fcn.004110e0
mov edx, dword [eax]
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
mov edi, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x90], esi
cmp dl, 0x8e
je 0x4707b4
movzx ebx, dl
test byte [ebx + 0x4c82e0], 1
je 0x47078c
mov ecx, dword [esp + 0x44]
shr edx, 8
movsx edx, dl
push edx
push eax
push esi
mov eax, edi
push ebx
mov edi, ebp
call fcn.0043a2f0
mov edx, dword [esp + 0x9e]
add esp, 0x10
mov ecx, ebp
call fcn.00411050
mov ebx, dword [esp + 0x64]
inc dword [esp + 0x24]
dec ebx
mov dword [esp + 0x64], ebx
test ebx, ebx
jg 0x470750
mov eax, dword [esp + 0xa4]
mov edi, dword [esp + 0x38]
push 2
push eax
call fcn.00448640
mov ecx, dword [esp + 0x68]
push ecx
mov ecx, ebp
call fcn.0041cdc0
add esp, 0xc
mov dword [esp + 0x6c], 1
mov ecx, dword [esp + 0x34]
mov edx, ebp
call fcn.00422330
mov edx, dword [esp + 0x18]
cmp edx, dword [esp + 0x28]
je 0x470814
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x5c]
push eax
call fcn.004139b0
add esp, 4
cmp dword [esp + 0x40], 0
je 0x470852
cmp dword [esp + 0x4c], 0
je 0x470852
mov eax, dword [esp + 0x40]
call fcn.004161d0
test eax, eax
je 0x470852
mov eax, dword [esp + 0x54]
inc eax
mov ecx, ebp
call fcn.0043a2d0
mov ecx, dword [esp + 0x4c]
push ecx
mov ecx, ebp
call fcn.0041cdc0
add esp, 4
mov dword [esp + 0x4c], 0
lea edx, [esp + 0x14]
lea ecx, [esp + 0x7c]
call fcn.004153b0
mov ebx, eax
mov dword [esp + 0x38], eax
test ebx, ebx
jne 0x470100
mov eax, dword [esp + 0x70]
test eax, eax
je 0x47088b
mov ecx, ebp
call fcn.0043a2d0
mov edx, dword [esp + 0x74]
push edx
mov ecx, ebp
call fcn.0041cdc0
add esp, 4
cmp dword [esp + 0x58], 0
je 0x470944
mov ebx, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
push 0x11
push ebp
mov eax, ebx
call fcn.0043a2b0
add esp, 8
cmp dword [esp + 0x1c], 0
jne 0x470927
cmp byte [esp + 0x12], 0
je 0x4708e5
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb8]
push eax
push ecx
push edx
push 0x35
push ebp
call fcn.0043a200
add esp, 0x14
mov edx, 0x90
mov ecx, ebp
call fcn.00411050
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb0]
push eax
push ecx
push edx
push 0x1f
push ebp
call fcn.0043a200
mov esi, dword [esp + 0xbc]
mov edi, dword [esp + 0xb8]
push 2
mov eax, esi
call fcn.00448730
add esp, 0x18
mov ecx, ebx
mov edx, ebp
call fcn.00422330
jmp 0x47094b
mov eax, dword [esp + 0x50]
mov ecx, ebp
call fcn.0043a2d0
mov esi, dword [esp + 0xa8]
mov ecx, ebx
mov edx, ebp
call fcn.00422330
jmp 0x47094b
mov esi, dword [esp + 0xa8]
test byte [esi + 0x1c], 0x80
jne 0x47098e
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xac]
mov edx, dword [ecx + eax*4]
movsx eax, word [esi + 0x24]
mov ecx, dword [esp + 0xb8]
push edx
push eax
inc ecx
push ecx
push 0x61
push ebp
call fcn.0043a200
add esp, 0x14
cmp byte [esp + 0x13], 0
jne 0x47098e
push 0
mov eax, esi
mov ecx, ebp
call fcn.0043dec0
add esp, 4
mov edx, dword [esp + 0xcc]
mov eax, dword [esp + 0x6c]
mov dword [edx], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret