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

Disassembly:
push 0xffffffffffffffff
push 0x552b4b
mov eax, dword fs:[0]
push eax
sub esp, 0x384
mov eax, dword [0x57f7c4]
xor eax, esp
mov dword [esp + 0x380], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x57f7c4]
xor eax, esp
push eax
lea eax, [esp + 0x398]
mov dword fs:[0], eax
movzx eax, byte [ecx + 2]
mov dword [esp + 0x24], ecx
movzx ecx, byte [ecx + 3]
mov edi, edx
lea eax, [eax + eax*2]
lea edx, [ecx + eax*8]
mov ecx, dword [edi + edx*4 + 0x1c0]
xor ebx, ebx
mov dword [esp + 0x28], ecx
cmp ecx, ebx
je 0x470c16
xor edx, edx
lea eax, [ecx + 0x46]
mov dword [esp + 0x20], edx
cmp byte [eax], bl
je 0x46f8da
mov edx, 1
mov dword [esp + 0x20], edx
cmp byte [ecx + 0x47], bl
je 0x46f8e4
inc edx
mov dword [esp + 0x20], edx
cmp byte [ecx + 0x48], bl
je 0x46f8ee
inc edx
mov dword [esp + 0x20], edx
cmp byte [ecx + 0x49], bl
je 0x46f8f8
inc edx
mov dword [esp + 0x20], edx
cmp byte [ecx + 0x4a], bl
je 0x46f902
inc edx
mov dword [esp + 0x20], edx
cmp byte [ecx + 0x4b], bl
je 0x46f90c
inc edx
mov dword [esp + 0x20], edx
cmp edx, ebx
je 0x470c16
mov dword [esp + 0x18], ebx
mov dword [esp + 0x2c], ebx
mov ebp, eax
mov dword [esp + 0x1c], 6
mov al, byte [ebp]
cmp al, bl
je 0x46f996
movzx eax, al
lea ecx, [eax - 1]
cmp ecx, 0xfe
ja 0x46f996
imul eax, eax, 0xa8
cmp byte [eax + 0x6c4698], bl
je 0x46f996
cmp byte [eax + 0x6c4699], bl
je 0x46f996
lea esi, [eax + 0x6c4674]
cmp esi, ebx
je 0x46f996
movzx eax, byte [esi + 0x32]
call fcn.0046c720
movsx edx, word [edi + 0x166]
mov ecx, eax
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
cmp ecx, ebx
jle 0x46f988
add dword [esp + 0x18], ecx
cmp word [esi + 0x34], bx
je 0x46f996
mov dword [esp + 0x2c], 1
inc ebp
sub dword [esp + 0x1c], 1
jne 0x46f926
mov ecx, dword [edi + 0xe0]
mov edx, dword [ecx + 0x28]
cmp dword [edx + 0x1a4], 6
jne 0x46fa76
mov ebp, dword [edi + 0x1810]
mov dword [esp + 0x1c], ebp
cmp ebp, ebx
je 0x46f9e8
lea esi, [ebp + 0x5cc]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [edi + 0x1810], ebx
jne 0x46f9e8
push esi
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
xor ebp, ebp
mov dword [esp + 0x1c], ebp
jmp 0x46f9ee
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [esp + 0x3a0], ebx
mov eax, dword [edi + 0x1810]
cmp eax, ebx
je 0x46fa05
cmp byte [eax + 0x48], 0xe
jbe 0x46fa3d
push 4
lea ecx, [esp + 0x1c]
mov eax, 0xd28
push ecx
mov ecx, edi
mov word [esp + 0x20], ax
mov byte [esp + 0x22], 1
mov byte [esp + 0x23], 0xe
call fcn.004ed0e0
cmp ebp, ebx
je 0x470c16
add ebp, 0x5cc
push ebp
call esi
jmp 0x470c16
lea edx, [esp + 0x34]
push edx
mov esi, eax
call fcn.00436b00
fild dword [esp + 0x18]
fmul qword [esp + 0x34]
call fcn.005250c0
mov dword [esp + 0x18], eax
mov dword [esp + 0x3a0], 0xffffffff
cmp ebp, ebx
je 0x46fa76
add ebp, 0x5cc
push ebp
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edx, dword [edi + 0x140]
cmp edx, dword [esp + 0x18]
jb 0x470c16
mov ecx, dword [esp + 0x28]
xor eax, eax
lea esp, [esp]
cmp byte [ecx + eax + 0x46], bl
jne 0x46faa1
inc eax
cmp eax, 6
jl 0x46fa90
jmp 0x470c16
movzx eax, byte [eax + ecx + 0x46]
lea ecx, [eax - 1]
cmp ecx, 0xfe
ja 0x470c16
imul eax, eax, 0xa8
cmp byte [eax + 0x6c4698], bl
je 0x470c16
cmp byte [eax + 0x6c4699], bl
je 0x470c16
lea eax, [eax + 0x6c4674]
cmp eax, ebx
je 0x470c16
movzx edx, byte [eax + 0x32]
movzx ecx, word [edi + 0x136]
add edx, edx
add edx, edx
add edx, edx
mov eax, 0x121
sub eax, edx
movzx edx, byte [edi + 0x12d]
mov dword [esp + 0x1c], eax
imul edx, edx, 0x84
fild dword [esp + 0x1c]
mov eax, dword [0x587960]
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
fmul qword [0x5741b8]
faddp st(1)
fiadd dword [edx + eax + 0x2bc]
call fcn.005250c0
mov esi, eax
cmp esi, 1
jge 0x46fb3b
mov esi, 1
add esi, dword [0x5879bc]
cmp esi, 0x32
jle 0x46fb4b
mov esi, 0x32
call fcn.0051bd66
cdq
mov ecx, 0x64
idiv ecx
cmp edx, esi
jge 0x4705f2
mov edx, 1
xor eax, eax
cmp dword [edi + 0x130c], edx
jl 0x46fc9a
lea esi, [ecx - 0x4c]
lea ecx, [edi + 0x220]
mov dword [esp + 0x1c], ecx
mov ebp, dword [esp + 0x1c]
xor ecx, ecx
mov dword [esp + 0x2c], ebp
lea ebx, [ebx]
mov ebp, dword [esp + 0x2c]
cmp dword [ebp], ebx
jne 0x46fbb2
mov dword [esp + eax*4 + 0xa0], edx
mov dword [esp + eax*4 + 0xb8], ecx
inc eax
cmp eax, dword [esp + 0x20]
je 0x46fca4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1c4], ebx
jne 0x46fbda
lea ebp, [ecx + 1]
mov dword [esp + eax*4 + 0xa0], edx
mov dword [esp + eax*4 + 0xb8], ebp
inc eax
cmp eax, dword [esp + 0x20]
je 0x46fca4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1c8], ebx
jne 0x46fc02
lea ebp, [ecx + 2]
mov dword [esp + eax*4 + 0xa0], edx
mov dword [esp + eax*4 + 0xb8], ebp
inc eax
cmp eax, dword [esp + 0x20]
je 0x46fca4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1cc], ebx
jne 0x46fc26
lea ebp, [ecx + 3]
mov dword [esp + eax*4 + 0xa0], edx
mov dword [esp + eax*4 + 0xb8], ebp
inc eax
cmp eax, dword [esp + 0x20]
je 0x46fca4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1d0], ebx
jne 0x46fc4a
lea ebp, [ecx + 4]
mov dword [esp + eax*4 + 0xa0], edx
mov dword [esp + eax*4 + 0xb8], ebp
inc eax
cmp eax, dword [esp + 0x20]
je 0x46fca4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1d4], ebx
jne 0x46fc6e
lea ebp, [ecx + 5]
mov dword [esp + eax*4 + 0xa0], edx
mov dword [esp + eax*4 + 0xb8], ebp
inc eax
cmp eax, dword [esp + 0x20]
je 0x46fca4
add dword [esp + 0x2c], 0x18
add ecx, 6
cmp ecx, 0x18
jl 0x46fb90
cmp eax, dword [esp + 0x20]
je 0x46fca4
add dword [esp + 0x1c], 0x60
inc edx
add esi, 0x18
cmp edx, dword [edi + 0x130c]
jle 0x46fb80
cmp eax, dword [esp + 0x20]
jne 0x470c16
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
sub dword [edi + 0x140], ebp
mov ecx, dword [edi + 0x140]
xor eax, eax
mov dword [esp + 0x118], eax
mov edx, 0x802
mov dword [esp + 0x11c], eax
mov dword [esp + 0x134], eax
mov word [esp + 0x138], ax
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], eax
mov dword [esp + 0x12c], eax
mov dword [esp + 0x130], eax
mov al, byte [esi + 2]
mov word [esp + 0x118], dx
mov dl, byte [esi + 3]
lea esi, [esp + 0x214]
mov byte [esp + 0x11a], 1
mov byte [esp + 0x11b], al
mov byte [esp + 0x11c], dl
mov byte [esp + 0x11d], 0xff
mov dword [esp + 0x136], ecx
mov byte [esp + 0x2a1], bl
call fcn.00467f60
mov eax, 0x40a
mov word [esp + 0x214], ax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x38]
mov edx, dword [eax + 0x3c]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x26b], ecx
mov dword [esp + 0x26f], edx
mov ecx, dword [eax]
add eax, 4
lea esi, [esp + 0x277]
mov dword [esp + 0x273], ecx
sub esi, eax
mov cl, byte [eax]
mov byte [esi + eax], cl
inc eax
cmp cl, bl
jne 0x46fd82
mov eax, dword [edi + 0x15bc]
mov dword [esp + 0x2c6], ebp
cmp eax, ebx
je 0x46fda9
mov edx, dword [eax + 0x38]
mov dword [esp + 0x2c2], edx
jmp 0x46fdb0
mov dword [esp + 0x2c2], ebx
mov eax, dword [edi + 0x12f4]
mov ecx, dword [edi + 0x12f8]
mov edx, dword [edi + 0x178]
mov dword [esp + 0x4c], eax
mov eax, dword [edi + 0x180]
mov dword [esp + 0x44], ecx
mov ecx, dword [edi + 0x17c]
mov dword [esp + 0x50], edx
mov dword [esp + 0x3c], eax
xor edx, edx
lea eax, [esp + 0x124]
mov byte [esp + 0x2ca], 1
mov dword [esp + 0x34], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], ebx
nop
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*8]
mov ecx, dword [edi + eax*4 + 0x1c0]
mov al, byte [ecx + edx + 0x46]
cmp al, bl
je 0x4702ea
movzx eax, al
lea edx, [eax - 1]
cmp edx, 0xfe
ja 0x4702ea
imul eax, eax, 0xa8
cmp byte [eax + 0x6c4698], bl
je 0x4702ea
cmp byte [eax + 0x6c4699], bl
je 0x4702ea
lea ebp, [eax + 0x6c4674]
cmp ebp, ebx
je 0x4702ea
mov eax, dword [0x587964]
lea esi, [eax + 0x84]
mov dword [esp + 0x20], eax
call fcn.004122a0
mov esi, eax
cmp esi, ebx
je 0x46feec
cmp dword [esi + 0x14], ebx
jne 0x46fe93
mov eax, dword [esp + 0x20]
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov dword [esi + 0x14], eax
mov byte [esi + 0x40], bl
mov byte [esi + 0x41], bl
mov byte [esi + 0x42], bl
mov byte [esi + 0x46], bl
mov byte [esi + 0x47], bl
mov byte [esi + 0x48], bl
mov byte [esi + 0x49], bl
mov byte [esi + 0x4a], bl
mov byte [esi + 0x4b], bl
mov byte [esi + 0x4c], bl
mov dword [esi + 0x64], ebx
mov byte [esi + 0x68], bl
xor ecx, ecx
xor eax, eax
mov word [esi + 0x44], cx
mov dword [esi + 0x84], eax
mov dword [esi + 0x88], eax
mov dword [esi + 0x8c], eax
mov dword [esi + 0x90], eax
mov dword [esi + 0x94], eax
mov word [esi + 0x98], ax
mov dword [esi + 0x9c], ebx
jmp 0x46feee
xor esi, esi
lea edx, [esp + 0x64]
push edx
mov dword [esi + 0x30], ebp
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, byte [ebp + 0x25]
mov cl, byte [ebp + 0x24]
mov edx, dword [esi + 0x30]
mov byte [esi + 0x40], cl
movzx ecx, word [esp + 0x64]
mov byte [esi + 0x41], al
sub ecx, 0x10
mov byte [esi + 0x42], 1
mov ax, word [edx + 0x4c]
movzx edx, word [esp + 0x66]
shl ecx, 4
mov word [esi + 0x44], ax
movzx eax, word [esp + 0x6a]
add ecx, edx
movzx edx, word [esp + 0x6c]
shl ecx, 5
add ecx, eax
movzx eax, word [esp + 0x6e]
shl ecx, 5
add ecx, edx
movzx edx, word [esp + 0x70]
shl ecx, 6
add ecx, eax
xor eax, eax
mov byte [esi + 0x46], bl
mov byte [esi + 0x47], bl
mov byte [esi + 0x48], bl
mov byte [esi + 0x49], bl
mov byte [esi + 0x4a], bl
mov byte [esi + 0x4b], bl
mov byte [esi + 0x4c], bl
mov byte [esi + 0x68], 0x47
shl ecx, 6
add ecx, edx
mov dword [esi + 0x64], ecx
mov dword [esi + 0x84], eax
mov dword [esi + 0x88], eax
lea ebp, [esi + 0x4c]
mov dword [esi + 0x8c], eax
mov dword [esi + 0x90], eax
mov dword [esi + 0x94], eax
mov word [esi + 0x98], ax
push 0x5828e8
mov dword [esi + 0x9c], ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, dword [0x5828e0]
jb 0x47002c
add eax, 0x7d0
mov dword [0x5828e0], eax
mov eax, dword [0x5828dc]
lea ecx, [esp + 0x90]
push ecx
mov dword [0x5828d8], eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, word [esp + 0x90]
movzx edx, word [esp + 0x92]
movzx ecx, word [esp + 0x96]
sub eax, 0x10
shl eax, 4
add eax, edx
movzx edx, word [esp + 0x98]
shl eax, 5
add eax, ecx
movzx ecx, word [esp + 0x9a]
shl eax, 5
add eax, edx
movzx edx, word [esp + 0x9c]
shl eax, 6
add eax, ecx
shl eax, 6
add eax, edx
mov dword [0x5828e4], eax
jmp 0x470031
mov eax, dword [0x5828e4]
mov ecx, dword [0x5828d8]
inc ecx
xor edx, edx
mov dword [0x5828d8], ecx
shl ecx, 0x10
or eax, edx
xor ebx, ebx
push 0x5828e8
or ebx, ecx
mov dword [esp + 0x5c], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
movzx eax, byte [0x5827c8]
cdq
add eax, ebx
adc edx, dword [esp + 0x58]
mov dword [esi + 0x38], eax
mov eax, dword [esp + 0x1c]
lea ecx, [esp + eax + 0xa0]
mov dword [esi + 0x3c], edx
lea edx, [esp + eax + 0xb8]
mov eax, dword [ecx]
mov dword [esp + 0x20], edx
mov edx, dword [edx]
lea eax, [eax + eax*2]
lea eax, [edx + eax*8]
mov dword [edi + eax*4 + 0x1c0], esi
mov eax, dword [esi + 0x30]
xor ebx, ebx
cmp eax, ebx
je 0x4700e9
cmp byte [eax + 0x4a], bl
je 0x4700e9
movzx edx, word [eax + 0x3e]
cmp dx, bx
jbe 0x4700e9
cmp dx, 0x64
jae 0x4700e9
mov edx, dword [str.00000000000000000000]
mov dword [ebp], edx
mov edx, dword [0x572ba4]
mov dword [ebp + 4], edx
mov edx, dword [0x572ba8]
mov dword [ebp + 8], edx
mov edx, dword [0x572bac]
mov dword [ebp + 0xc], edx
mov edx, dword [0x572bb0]
mov dword [ebp + 0x10], edx
mov dl, byte [0x572bb4]
mov byte [ebp + 0x14], dl
mov byte [esi + 0x60], bl
mov cl, byte [ecx]
xor edx, edx
mov word [esp + 0xf3], dx
mov edx, 0x701
mov word [esp + 0xdc], dx
mov edx, dword [edi + 0x582c]
mov dword [esp + 0xde], edx
mov edx, dword [esi + 0x38]
mov dword [esp + 0xe2], ebx
mov dword [esp + 0xe6], ebx
mov dword [esp + 0xea], ebx
mov byte [esp + 0xee], 0xff
mov byte [esp + 0xef], 0xff
mov byte [esp + 0xf0], bl
mov byte [esp + 0xf1], bl
mov byte [esp + 0xf2], bl
mov dword [esp + 0x110], ebx
mov byte [esp + 0x114], bl
mov dword [esp + 0xf5], ebx
mov word [esp + 0xf9], bx
mov byte [esp + 0x33], cl
mov byte [esp + 0xfb], bl
mov eax, dword [eax]
mov dword [esp + 0xea], eax
mov byte [esp + 0xee], cl
mov ecx, dword [esp + 0x20]
mov al, byte [ecx]
movzx ecx, byte [esi + 0x40]
mov byte [esp + 0x32], al
mov byte [esp + 0xef], al
mov eax, dword [esi + 0x3c]
mov dword [esp + 0xe6], eax
movzx eax, byte [esi + 0x42]
mov dword [esp + 0xe2], edx
mov dl, byte [esi + 0x41]
mov byte [esp + 0xf2], al
movzx eax, byte [esi + 0x68]
mov byte [esp + 0xf0], cl
mov cx, word [esi + 0x44]
mov byte [esp + 0xf1], dl
mov edx, dword [esi + 0x64]
mov byte [esp + 0x114], al
mov word [esp + 0xf3], cx
mov ecx, dword [esi + 0x46]
mov dword [esp + 0x110], edx
mov dx, word [esi + 0x4a]
lea eax, [esp + 0xfb]
mov dword [esp + 0xf5], ecx
mov word [esp + 0xf9], dx
sub eax, ebp
mov cl, byte [ebp]
mov byte [eax + ebp], cl
inc ebp
cmp cl, bl
jne 0x470206
mov ecx, dword [0x58796c]
push 0x39
lea eax, [esp + 0xe0]
push eax
call fcn.004ed2d0
mov eax, dword [esp + 0x2c]
movzx ecx, byte [esp + 0x33]
movzx edx, byte [esp + 0x32]
mov byte [eax - 6], cl
mov byte [eax], dl
movzx ecx, byte [esi + 0x41]
add dword [esp + 0x1c], 4
mov byte [eax + 6], cl
movzx edx, byte [esi + 0x42]
mov byte [eax + 0xc], dl
inc eax
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 0x2b6], eax
mov ecx, dword [esi + 0x3c]
mov dword [esp + 0x2ba], ecx
mov edx, dword [esi + 0x30]
mov eax, dword [edx]
mov dword [esp + 0x2be], eax
mov eax, dword [esi + 0x30]
add eax, 4
lea edx, [esp + 0x2cb]
mov edi, edi
mov cl, byte [eax]
mov byte [edx], cl
inc eax
inc edx
cmp cl, bl
jne 0x470280
mov ecx, dword [esi + 0x46]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x297], ecx
mov dx, word [esi + 0x4a]
mov ecx, dword [eax + 0x64]
mov word [esp + 0x29b], dx
push 0xd7
lea edx, [esp + 0x218]
mov dword [esp + 0x2a1], ecx
mov ecx, dword [0x587974]
push edx
call fcn.004ed210
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2c6], ebx
cmp byte [eax + 2], bl
jne 0x4702ea
movzx ecx, byte [esi + 0x41]
xor esi, esi
mov eax, edi
call fcn.00462c10
mov esi, edi
call fcn.00460e40
mov edx, dword [esp + 0x18]
inc edx
cmp edx, 6
mov dword [esp + 0x18], edx
jl 0x46fe00
mov esi, dword [esp + 0x28]
mov dword [esi + 0x46], ebx
mov word [esi + 0x4a], bx
mov ecx, dword [esi + 0x30]
movzx eax, word [ecx + 0x4c]
cmp word [esi + 0x44], ax
jbe 0x470318
mov word [esi + 0x44], ax
mov ebp, dword [esp + 0x24]
cmp byte [ebp + 2], bl
jne 0x470435
cmp byte [ebp + 3], 5
jne 0x47036b
mov eax, dword [edi + 0x1d4]
mov esi, edi
call fcn.00462940
mov eax, 1
lea ecx, [ecx]
cmp byte [edi + eax + 0x12cc], bl
jne 0x47036b
inc eax
cmp eax, 9
jl 0x470340
movzx eax, byte [ebp + 2]
lea edx, [eax + eax*2]
movzx eax, byte [ebp + 3]
lea ecx, [eax + edx*8]
mov eax, dword [edi + ecx*4 + 0x1c0]
mov esi, edi
call fcn.00462940
cmp byte [ebp + 3], 1
jne 0x47039d
mov eax, 1
cmp byte [edi + eax + 0x12d5], bl
jne 0x47039d
inc eax
cmp eax, 9
jl 0x470376
movzx eax, byte [ebp + 2]
lea edx, [eax + eax*2]
shl edx, 5
mov eax, dword [edx + edi + 0x1c4]
mov esi, edi
call fcn.004629d0
mov esi, dword [esp + 0x28]
movzx ecx, word [esi + 0x44]
mov eax, dword [esi + 0x30]
cmp cx, word [eax + 0x50]
ja 0x4703b8
mov dword [esp + 0x18], 2
jmp 0x4703c3
cmp word [eax + 0x4e], cx
sbb eax, eax
inc eax
mov dword [esp + 0x18], eax
movzx eax, byte [ebp + 3]
movzx ecx, byte [eax + edi + 0x199]
cmp dword [esp + 0x18], ecx
je 0x470435
movzx eax, byte [ebp + 3]
movzx ecx, byte [ebp + 2]
movzx edx, byte [edi + eax + 0x199]
lea ecx, [ecx + ecx*2]
lea ecx, [eax + ecx*8]
mov ecx, dword [edi + ecx*4 + 0x1c0]
push eax
mov eax, edi
call fcn.00463030
movzx ecx, byte [ebp + 2]
movzx eax, byte [ebp + 3]
lea edx, [ecx + ecx*2]
lea ecx, [eax + edx*8]
mov edx, dword [esp + 0x18]
mov ecx, dword [edi + ecx*4 + 0x1c0]
push eax
mov eax, edi
call fcn.00462f80
movzx edx, byte [ebp + 3]
mov al, byte [esp + 0x18]
mov esi, edi
mov byte [edx + edi + 0x199], al
call fcn.00460e40
mov esi, dword [esp + 0x28]
mov eax, dword [edi + 0x12f4]
cmp dword [esp + 0x4c], eax
jne 0x470451
mov ecx, dword [esp + 0x44]
cmp ecx, dword [edi + 0x12f8]
je 0x47052f
cmp byte [edi + 0x5855], bl
jne 0x47052f
mov ecx, dword [edi + 0x134c]
mov edx, 0x51c
mov word [esp + 0x44], dx
mov edx, dword [edi + 0xdc]
mov dword [esp + 0x46], edx
cmp ecx, ebx
jne 0x4704a7
cmp dword [edi + 0x1348], ebx
jne 0x4704a7
cmp dword [edi + 0x1438], ebx
jne 0x4704a7
cmp dword [edi + 0x1350], ebx
jne 0x4704a7
cmp eax, ebx
jge 0x47049b
xor eax, eax
jmp 0x4704ac
cmp eax, 0xa
jl 0x4704ac
mov eax, 9
jmp 0x4704ac
mov eax, 0xff
mov byte [esp + 0x4a], al
cmp dword [edi + 0x1344], ebx
jne 0x4704fa
cmp ecx, ebx
jne 0x4704fa
cmp dword [edi + 0x1348], ebx
jne 0x4704fa
cmp dword [edi + 0x5818], ebx
jne 0x4704fa
cmp dword [edi + 0x1438], ebx
jne 0x4704fa
cmp dword [edi + 0x1350], ebx
je 0x4704e0
xor eax, eax
jmp 0x4704ff
mov eax, dword [edi + 0x12f8]
cmp eax, ebx
jge 0x4704ee
xor eax, eax
jmp 0x4704ff
cmp eax, 5
jl 0x4704ff
mov eax, 4
jmp 0x4704ff
mov eax, 0xff
mov byte [esp + 0x4b], al
mov eax, dword [edi + 0xe0]
cmp eax, ebx
je 0x47052f
fld dword [0x574168]
push 5
push ebx
push edx
push ecx
fstp dword [esp]
lea ecx, [edi + 0xd0]
push ecx
push 8
lea edx, [esp + 0x5c]
push edx
push eax
call fcn.00427cf0
mov eax, dword [esp + 0x50]
cmp eax, dword [edi + 0x178]
je 0x470546
mov esi, edi
call fcn.00490830
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
cmp ecx, dword [edi + 0x180]
je 0x47055d
mov esi, edi
call fcn.00490960
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
cmp edx, dword [edi + 0x17c]
je 0x470574
mov esi, edi
call fcn.00490a70
mov esi, dword [esp + 0x28]
push ebx
xor edx, edx
xor ecx, ecx
mov eax, edi
call fcn.00490da0
mov ecx, dword [edi + 0x582c]
mov dl, byte [ebp + 2]
mov eax, 0x709
mov word [esp + 0x80], ax
mov al, byte [ebp + 3]
mov dword [esp + 0x82], ecx
mov cx, word [esi + 0x44]
mov byte [esp + 0x87], al
mov byte [esp + 0x86], dl
mov edx, dword [edi + 0x140]
push 0xe
lea eax, [esp + 0x84]
mov word [esp + 0x8c], cx
mov ecx, dword [0x58796c]
push eax
mov dword [esp + 0x92], edx
call fcn.004ed2d0
push 0x22
lea ecx, [esp + 0x11c]
push ecx
mov ecx, edi
call fcn.004ed0e0
jmp 0x470c16
mov edx, dword [esp + 0x18]
mov eax, dword [edi + 0x12f4]
mov ecx, dword [edi + 0x12f8]
sub dword [edi + 0x140], edx
mov edx, dword [edi + 0x178]
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x180]
mov dword [esp + 0x3c], ecx
mov ecx, dword [edi + 0x17c]
mov dword [esp + 0x50], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], ecx
xor ebp, ebp
mov ecx, dword [esp + 0x24]
mov al, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
movzx esi, al
lea edx, [esi + esi*2]
lea edx, [ecx + edx*8]
mov ecx, dword [edi + edx*4 + 0x1c0]
movzx ecx, byte [ecx + ebp + 0x46]
cmp ecx, ebx
je 0x470666
cmp al, bl
jne 0x470666
mov eax, edi
call fcn.00462c10
mov esi, edi
call fcn.00460e40
inc ebp
cmp ebp, 6
jl 0x470630
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 2], bl
jne 0x4706db
cmp byte [ecx + 3], 5
jne 0x4706a0
mov eax, 1
cmp byte [edi + eax + 0x12cc], bl
jne 0x4706a0
inc eax
cmp eax, 9
jl 0x470680
mov eax, dword [edi + 0x1d4]
mov esi, edi
call fcn.00462940
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 3], 1
jne 0x4706db
mov eax, 1
jmp 0x4706b0
cmp byte [edi + eax + 0x12d5], bl
jne 0x4706db
inc eax
cmp eax, 9
jl 0x4706b0
mov edx, dword [esp + 0x24]
movzx eax, byte [edx + 2]
lea eax, [eax + eax*2]
shl eax, 5
mov eax, dword [eax + edi + 0x1c4]
mov esi, edi
call fcn.004629d0
mov eax, dword [edi + 0x12f4]
cmp dword [esp + 0x34], eax
jne 0x4706f7
mov ecx, dword [esp + 0x3c]
cmp ecx, dword [edi + 0x12f8]
je 0x4707d5
cmp byte [edi + 0x5855], bl
jne 0x4707d5
mov ecx, dword [edi + 0x134c]
mov edx, 0x51c
mov word [esp + 0x3c], dx
mov edx, dword [edi + 0xdc]
mov dword [esp + 0x3e], edx
cmp ecx, ebx
jne 0x47074d
cmp dword [edi + 0x1348], ebx
jne 0x47074d
cmp dword [edi + 0x1438], ebx
jne 0x47074d
cmp dword [edi + 0x1350], ebx
jne 0x47074d
cmp eax, ebx
jge 0x470741
xor eax, eax
jmp 0x470752
cmp eax, 0xa
jl 0x470752
mov eax, 9
jmp 0x470752
mov eax, 0xff
mov byte [esp + 0x42], al
cmp dword [edi + 0x1344], ebx
jne 0x4707a0
cmp ecx, ebx
jne 0x4707a0
cmp dword [edi + 0x1348], ebx
jne 0x4707a0
cmp dword [edi + 0x5818], ebx
jne 0x4707a0
cmp dword [edi + 0x1438], ebx
jne 0x4707a0
cmp dword [edi + 0x1350], ebx
je 0x470786
xor eax, eax
jmp 0x4707a5
mov eax, dword [edi + 0x12f8]
cmp eax, ebx
jge 0x470794
xor eax, eax
jmp 0x4707a5
cmp eax, 5
jl 0x4707a5
mov eax, 4
jmp 0x4707a5
mov eax, 0xff
mov byte [esp + 0x43], al
mov eax, dword [edi + 0xe0]
cmp eax, ebx
je 0x4707d5
fld dword [0x574168]
push 5
push ebx
push edx
push ecx
fstp dword [esp]
lea ecx, [edi + 0xd0]
push ecx
push 8
lea edx, [esp + 0x54]
push edx
push eax
call fcn.00427cf0
mov eax, dword [esp + 0x50]
cmp eax, dword [edi + 0x178]
je 0x4707e8
mov esi, edi
call fcn.00490830
mov ecx, dword [esp + 0x44]
cmp ecx, dword [edi + 0x180]
je 0x4707fb
mov esi, edi
call fcn.00490960
mov edx, dword [esp + 0x4c]
cmp edx, dword [edi + 0x17c]
je 0x47080e
mov esi, edi
call fcn.00490a70
push ebx
xor edx, edx
xor ecx, ecx
mov eax, edi
call fcn.00490da0
mov ebp, dword [esp + 0x28]
mov dword [ebp + 0x46], ebx
mov word [ebp + 0x4a], bx
mov eax, dword [ebp + 0x30]
movzx eax, word [eax + 0x4c]
cmp word [ebp + 0x44], ax
jbe 0x470836
mov word [ebp + 0x44], ax
mov esi, dword [esp + 0x24]
movzx eax, byte [esi + 2]
mov edx, dword [edi + 0x582c]
mov ecx, 0x709
mov word [esp + 0x64], cx
movzx ecx, byte [esi + 3]
mov byte [esp + 0x6b], cl
push 0xe
lea ecx, [esp + 0x68]
mov dword [esp + 0x6a], edx
mov dx, word [ebp + 0x44]
mov byte [esp + 0x6e], al
mov eax, dword [edi + 0x140]
push ecx
mov ecx, dword [0x58796c]
mov word [esp + 0x74], dx
mov dword [esp + 0x76], eax
call fcn.004ed2d0
movzx ecx, byte [esi + 3]
xor eax, eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xd4], eax
mov word [esp + 0xd8], ax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], eax
movzx eax, byte [esi + 2]
mov edx, 0x802
mov byte [esp + 0xbb], al
mov word [esp + 0xb8], dx
mov edx, dword [edi + 0x140]
push 0x22
lea eax, [esp + 0xbc]
mov byte [esp + 0xc0], cl
push eax
mov ecx, edi
mov byte [esp + 0xc2], bl
mov byte [esp + 0xc5], 0xff
mov dword [esp + 0xde], edx
call fcn.004ed0e0
lea esi, [esp + 0x13c]
mov byte [esp + 0x1c9], bl
call fcn.00467f60
mov eax, dword [ebp + 0x3c]
mov edx, dword [ebp + 0x38]
mov dword [esp + 0x197], eax
mov eax, dword [ebp + 0x30]
mov ecx, 0x40a
mov dword [esp + 0x193], edx
mov word [esp + 0x13c], cx
mov ecx, dword [eax]
add eax, 4
lea edx, [esp + 0x19f]
mov dword [esp + 0x19b], ecx
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
cmp cl, bl
jne 0x470961
mov eax, dword [edi + 0x15bc]
cmp eax, ebx
je 0x470981
mov edx, dword [eax + 0x38]
mov dword [esp + 0x1ea], edx
jmp 0x470988
mov dword [esp + 0x1ea], ebx
mov eax, dword [esp + 0x18]
mov dx, word [ebp + 0x4a]
mov ecx, dword [ebp + 0x46]
mov word [esp + 0x1c3], dx
mov dword [esp + 0x1ee], eax
lea eax, [ebp + 0x4c]
lea edx, [esp + 0x1c9]
mov byte [esp + 0x1f2], bl
mov dword [esp + 0x1de], ebx
mov dword [esp + 0x1e2], ebx
mov dword [esp + 0x1e6], ebx
mov byte [esp + 0x1f3], bl
mov dword [esp + 0x1bf], ecx
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
cmp cl, bl
jne 0x4709d8
mov eax, dword [ebp + 0x64]
push 0xd7
lea ecx, [esp + 0x140]
push ecx
mov ecx, dword [0x587974]
mov dword [esp + 0x1cd], eax
call fcn.004ed210
cmp dword [esp + 0x2c], ebx
je 0x470c16
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
cmp eax, ebx
jne 0x470aa0
movzx eax, word [ebp + 0x44]
cmp word [edi + ecx*2 + 0x1a6], ax
je 0x470a6e
mov ecx, dword [edi + 0x582c]
mov edx, 0x70c
mov word [esp + 0x7b], ax
mov word [esp + 0x74], dx
mov dl, byte [esp + 0x18]
push 9
lea eax, [esp + 0x78]
mov dword [esp + 0x7a], ecx
mov ecx, dword [0x58796c]
push eax
mov byte [esp + 0x82], dl
call fcn.004ed2d0
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov word [edi + eax*2 + 0x1a6], cx
push eax
mov ecx, ebp
mov edx, edi
call fcn.00461d10
cmp dword [esp + 0x18], 8
jge 0x470a99
mov edx, dword [esp + 0x18]
push edx
mov ecx, edi
call fcn.00492c00
mov esi, edi
call fcn.00460e40
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
lea edx, [eax + eax*2]
lea edx, [ecx + edx*8]
mov dword [edi + edx*4 + 0x1c0], ebx
mov byte [esp + 0x5b], cl
mov edx, 0x702
push 9
lea ecx, [esp + 0x58]
mov word [esp + 0x58], dx
mov edx, dword [edi + 0x582c]
mov byte [esp + 0x5e], al
mov al, byte [ebp + 0x42]
push ecx
mov ecx, dword [0x58796c]
mov dword [esp + 0x5e], edx
mov byte [esp + 0x64], al
call fcn.004ed2d0
lea esi, [esp + 0x2ec]
mov byte [esp + 0x379], bl
call fcn.00467f60
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x3c]
mov dword [esp + 0x343], eax
mov eax, dword [ebp + 0x30]
mov edx, 0x402
mov word [esp + 0x2ec], dx
mov dword [esp + 0x347], ecx
mov edx, dword [eax]
mov dword [esp + 0x34b], edx
add eax, 4
lea edx, [esp + 0x34f]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
cmp cl, bl
jne 0x470b36
mov al, byte [esp + 0x1c]
mov edx, dword [ebp + 0x46]
mov cl, byte [esp + 0x18]
mov byte [esp + 0x38e], al
mov ax, word [ebp + 0x4a]
mov dword [esp + 0x36f], edx
mov word [esp + 0x373], ax
lea eax, [ebp + 0x4c]
lea edx, [esp + 0x379]
mov byte [esp + 0x38f], cl
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
cmp cl, bl
jne 0x470b78
mov ecx, dword [ebp + 0x64]
movzx edx, byte [ebp + 0x42]
push 0xa5
lea eax, [esp + 0x2f0]
mov dword [esp + 0x379], ecx
mov ecx, dword [0x587974]
push eax
mov byte [esp + 0x398], dl
call fcn.004ed210
movzx edx, byte [esp + 0x1c]
mov al, byte [esp + 0x18]
mov ecx, 0x206
mov word [esp + 0x34], cx
push 7
lea ecx, [esp + 0x38]
push ecx
mov ecx, edi
mov byte [esp + 0x3e], dl
mov byte [esp + 0x3f], al
mov byte [esp + 0x40], bl
mov byte [esp + 0x41], bl
mov byte [esp + 0x42], bl
call fcn.004ed0e0
mov esi, dword [0x587964]
add esi, 0x84
lea edi, [esi + 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi]
cmp eax, ebx
jne 0x470c07
mov dword [esi], ebp
mov dword [ebp + 4], ebx
jmp 0x470c0c
mov dword [ebp + 4], eax
mov dword [esi], ebp
inc dword [esi + 8]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0x398]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x380]
xor ecx, esp
call fcn.0051a8be
add esp, 0x390
ret
push 0xffffffffffffffff
push 0x552b0b
mov eax, dword fs:[0]
push eax
sub esp, 0x344
mov eax, dword [0x57f7c4]
xor eax, esp
mov dword [esp + 0x340], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x57f7c4]
xor eax, esp
push eax
lea eax, [esp + 0x358]
mov dword fs:[0], eax
mov ebx, edx
movzx eax, byte [ebx + 2]
mov edi, ecx
movzx ecx, byte [ebx + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*8]
mov ebp, dword [edi + edx*4 + 0x1c0]
xor ecx, ecx
mov dword [esp + 0x18], ebp
cmp ebp, ecx
je 0x471a55
xor eax, eax
cmp byte [ebp + 0x46], al
je 0x470cbc
lea eax, [ecx + 1]
cmp byte [ebp + 0x47], cl
je 0x470cc2
inc eax
cmp byte [ebp + 0x48], cl
je 0x470cc8
inc eax
cmp byte [ebp + 0x49], cl
je 0x470cce
inc eax
cmp byte [ebp + 0x4a], cl
je 0x470cd4
inc eax
cmp byte [ebp + 0x4b], cl
je 0x470cda
inc eax
cmp eax, ecx
je 0x471a55
movzx eax, byte [ebx + 5]
movzx eax, byte [eax + ebp + 0x46]
lea edx, [eax - 1]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ecx
cmp edx, 0xfe
ja 0x471a55
imul eax, eax, 0xa8
cmp byte [eax + 0x6c4698], cl
je 0x471a55
cmp byte [eax + 0x6c4699], cl
je 0x471a55
lea esi, [eax + 0x6c4674]
cmp esi, ecx
je 0x471a55
movzx eax, byte [esi + 0x32]
call fcn.0046c720
movsx edx, word [edi + 0x166]
mov ecx, eax
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
test ecx, ecx
jle 0x470d5b
mov dword [esp + 0x14], ecx
cmp word [esi + 0x34], 0
je 0x470d6a
mov dword [esp + 0x20], 1
mov ecx, dword [edi + 0xe0]
mov edx, dword [ecx + 0x28]
cmp dword [edx + 0x1a4], 6
jne 0x470e21
lea esi, [esp + 0x1c]
call fcn.00431eb0
mov dword [esp + 0x360], 0
mov esi, dword [edi + 0x1810]
test esi, esi
je 0x470fea
mov al, 0xe
cmp byte [esi + 0x48], al
jbe 0x470de7
mov byte [esp + 0x17], al
mov ecx, 0xd28
push 4
lea edx, [esp + 0x18]
mov word [esp + 0x18], cx
push edx
mov ecx, edi
mov byte [esp + 0x1e], 1
call fcn.004ed0e0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x471a55
add eax, 0x5cc
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x471a55
lea eax, [esp + 0x24]
push eax
call fcn.00436b00
fild dword [esp + 0x14]
fmul qword [esp + 0x24]
call fcn.005250c0
mov dword [esp + 0x14], eax
mov dword [esp + 0x360], 0xffffffff
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x470e21
add eax, 0x5cc
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [edi + 0x140]
cmp eax, dword [esp + 0x14]
jb 0x471a55
mov al, byte [ebx + 6]
test al, al
je 0x471a55
movzx eax, al
cmp eax, dword [edi + 0x130c]
jg 0x471a55
mov cl, byte [ebx + 7]
cmp cl, 0x18
jae 0x471a55
lea edx, [eax + eax*2]
movzx eax, cl
lea ecx, [eax + edx*8]
cmp dword [edi + ecx*4 + 0x1c0], 0
lea eax, [edi + ecx*4 + 0x1c0]
je 0x471a55
mov eax, dword [eax]
mov edx, dword [eax + 0x30]
cmp dword [edx + 0xa0], 0x1a
jne 0x471a55
mov eax, edx
cmp byte [eax + 0x46], 0x3a
jne 0x471a55
movzx eax, byte [ebx + 6]
movzx ecx, byte [ebx + 7]
lea edx, [eax + eax*2]
lea edx, [ecx + edx*8]
mov edx, dword [edi + edx*4 + 0x1c0]
mov edx, dword [edx + 0x30]
movsx esi, word [edx + 0x34]
push 0
push ecx
push eax
mov ecx, edi
call fcn.004728e0
add esi, dword [0x5879bc]
call fcn.0051bd66
cdq
mov ecx, 0x64
idiv ecx
cmp edx, esi
jge 0x471569
mov edx, 1
xor eax, eax
cmp dword [edi + 0x130c], edx
jl 0x471a55
lea esi, [ecx - 0x4c]
lea ecx, [edi + 0x220]
mov dword [esp + 0x20], ecx
mov ebp, dword [esp + 0x20]
xor ecx, ecx
mov dword [esp + 0x1c], ebp
nop
mov ebp, dword [esp + 0x1c]
cmp dword [ebp], 0
jne 0x470f1c
mov dword [esp + eax*4 + 0x38], edx
mov dword [esp + eax*4 + 0x78], ecx
inc eax
cmp eax, 1
je 0x470ff4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1c4], 0
jne 0x470f3e
lea ebp, [ecx + 1]
mov dword [esp + eax*4 + 0x38], edx
mov dword [esp + eax*4 + 0x78], ebp
inc eax
cmp eax, 1
je 0x470ff4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1c8], 0
jne 0x470f60
lea ebp, [ecx + 2]
mov dword [esp + eax*4 + 0x38], edx
mov dword [esp + eax*4 + 0x78], ebp
inc eax
cmp eax, 1
je 0x470ff4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1cc], 0
jne 0x470f7e
lea ebp, [ecx + 3]
mov dword [esp + eax*4 + 0x38], edx
mov dword [esp + eax*4 + 0x78], ebp
inc eax
cmp eax, 1
je 0x470ff4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1d0], 0
jne 0x470f9c
lea ebp, [ecx + 4]
mov dword [esp + eax*4 + 0x38], edx
mov dword [esp + eax*4 + 0x78], ebp
inc eax
cmp eax, 1
je 0x470ff4
lea ebp, [esi + ecx]
cmp dword [edi + ebp*4 + 0x1d4], 0
jne 0x470fba
lea ebp, [ecx + 5]
mov dword [esp + eax*4 + 0x38], edx
mov dword [esp + eax*4 + 0x78], ebp
inc eax
cmp eax, 1
je 0x470ff4
add dword [esp + 0x1c], 0x18
add ecx, 6
cmp ecx, 0x18
jl 0x470f00
cmp eax, 1
je 0x470ff4
add dword [esp + 0x20], 0x60
inc edx
add esi, 0x18
cmp edx, dword [edi + 0x130c]
jle 0x470ef5
jmp 0x471a55
mov byte [esp + 0x17], 0xe
jmp 0x470dad
mov ebp, dword [esp + 0x14]
sub dword [edi + 0x140], ebp
mov ecx, dword [edi + 0x140]
xor eax, eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xb8], eax
mov word [esp + 0xbc], ax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
movzx eax, byte [ebx + 2]
mov edx, 0x802
mov byte [esp + 0x9f], al
movzx eax, byte [ebx + 5]
mov word [esp + 0x9c], dx
mov dl, byte [ebx + 3]
lea esi, [esp + 0xfc]
mov byte [esp + 0x9e], 1
mov byte [esp + 0xa0], dl
mov byte [esp + 0xa1], al
mov dword [esp + 0xba], ecx
mov byte [esp + 0x189], 0
call fcn.00467f60
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 0x38]
mov ecx, 0x40a
mov word [esp + 0xfc], cx
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x157], ecx
mov dword [esp + 0x153], edx
mov edx, dword [eax]
add eax, 4
lea ecx, [esp + 0x15f]
mov dword [esp + 0x15b], edx
sub ecx, eax
mov dl, byte [eax]
mov byte [eax + ecx], dl
inc eax
test dl, dl
jne 0x4710d3
mov eax, dword [edi + 0x15bc]
mov dword [esp + 0x1ae], ebp
test eax, eax
je 0x4710fa
mov eax, dword [eax + 0x38]
mov dword [esp + 0x1aa], eax
jmp 0x471105
mov dword [esp + 0x1aa], 0
mov ecx, dword [edi + 0x12f4]
mov eax, dword [edi + 0x178]
mov edx, dword [edi + 0x12f8]
mov dword [esp + 0x20], ecx
mov ecx, dword [edi + 0x180]
mov dword [esp + 0x14], eax
movzx eax, byte [ebx + 2]
mov dword [esp + 0x30], ecx
movzx ecx, byte [ebx + 3]
mov dword [esp + 0x1c], edx
mov edx, dword [edi + 0x17c]
lea eax, [eax + eax*2]
mov dword [esp + 0x34], edx
lea edx, [ecx + eax*8]
movzx eax, byte [ebx + 5]
mov byte [esp + 0x1b2], 1
mov ecx, dword [edi + edx*4 + 0x1c0]
mov al, byte [ecx + eax + 0x46]
test al, al
je 0x4713a3
movzx eax, al
lea edx, [eax - 1]
cmp edx, 0xfe
ja 0x471a55
imul eax, eax, 0xa8
cmp byte [eax + 0x6c4698], 0
je 0x471a55
cmp byte [eax + 0x6c4699], 0
je 0x471a55
lea ebp, [eax + 0x6c4674]
test ebp, ebp
je 0x471a55
call fcn.004116d0
mov esi, eax
test esi, esi
je 0x4713a3
push 0x47
push ecx
mov dword [esi + 0x30], ebp
call fcn.004e1a50
movzx ecx, byte [ebp + 0x24]
add esp, 4
push eax
movzx eax, byte [ebp + 0x25]
push 1
push eax
push ecx
mov eax, esi
call fcn.004d21c0
call fcn.00464840
mov dword [esi + 0x38], eax
mov eax, dword [esp + 0x38]
mov dword [esi + 0x3c], edx
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x78]
lea ecx, [eax + edx*8]
mov eax, esi
mov dword [edi + ecx*4 + 0x1c0], esi
call fcn.004d2470
lea eax, [esp + 0xc0]
call fcn.00468080
mov eax, dword [edi + 0x582c]
mov ecx, dword [esi + 0x30]
mov dword [esp + 0xc2], eax
movzx eax, byte [esp + 0x38]
mov edx, 0x701
mov word [esp + 0xc0], dx
mov edx, dword [ecx]
movzx ecx, byte [esp + 0x78]
mov dword [esp + 0xce], edx
mov edx, dword [esi + 0x38]
mov byte [esp + 0xd2], al
mov eax, dword [esi + 0x3c]
mov dword [esp + 0xc6], edx
mov dl, byte [esi + 0x41]
mov dword [esp + 0xca], eax
movzx eax, byte [esi + 0x42]
mov byte [esp + 0xd3], cl
movzx ecx, byte [esi + 0x40]
mov byte [esp + 0xd5], dl
mov edx, dword [esi + 0x64]
mov byte [esp + 0xd6], al
movzx eax, byte [esi + 0x68]
mov dword [esp + 0xf4], edx
mov dx, word [esi + 0x4a]
mov byte [esp + 0xd4], cl
mov cx, word [esi + 0x44]
mov word [esp + 0xdd], dx
mov word [esp + 0xd7], cx
mov ecx, dword [esi + 0x46]
mov byte [esp + 0xf8], al
lea eax, [esi + 0x4c]
lea edx, [esp + 0xdf]
mov dword [esp + 0xd9], ecx
sub edx, eax
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x4712c0
mov ecx, dword [0x58796c]
push 0x39
lea eax, [esp + 0xc4]
push eax
call fcn.004ed2d0
movzx ecx, byte [esp + 0x38]
mov dl, byte [esp + 0x78]
mov byte [esp + 0xa8], dl
mov byte [esp + 0xa2], cl
mov al, byte [esi + 0x41]
mov byte [esp + 0xae], al
movzx ecx, byte [esi + 0x42]
mov byte [esp + 0xb4], cl
mov edx, dword [esi + 0x38]
mov dword [esp + 0x19e], edx
mov eax, dword [esi + 0x3c]
mov dword [esp + 0x1a2], eax
mov ecx, dword [esi + 0x30]
mov edx, dword [ecx]
mov dword [esp + 0x1a6], edx
mov eax, dword [esi + 0x30]
add eax, 4
lea edx, [esp + 0x1b3]
mov cl, byte [eax]
mov byte [edx], cl
inc eax
inc edx
test cl, cl
jne 0x471338
mov eax, dword [esi + 0x46]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x17f], eax
mov cx, word [esi + 0x4a]
mov eax, dword [edx + 0x64]
mov word [esp + 0x183], cx
push 0xd7
lea ecx, [esp + 0x100]
push ecx
mov ecx, dword [0x587974]
mov dword [esp + 0x18d], eax
call fcn.004ed210
cmp byte [ebx + 2], 0
mov dword [esp + 0x1ae], 0
jne 0x4713a3
movzx ecx, byte [esi + 0x41]
xor esi, esi
mov eax, edi
call fcn.00462c10
mov esi, edi
call fcn.00460e40
movzx edx, byte [ebx + 5]
mov ebp, dword [esp + 0x18]
mov byte [edx + ebp + 0x46], 0
mov eax, dword [ebp + 0x30]
movzx eax, word [eax + 0x4c]
cmp word [ebp + 0x44], ax
jbe 0x4713c1
mov word [ebp + 0x44], ax
cmp byte [ebx + 2], 0
jne 0x4714a0
cmp byte [ebx + 3], 5
jne 0x4713fc
mov eax, dword [edi + 0x1d4]
mov esi, edi
call fcn.00462940
mov eax, 1
cmp byte [eax + edi + 0x12cc], 0
jne 0x4713fc
inc eax
cmp eax, 9
jl 0x4713e3
mov eax, ebp
mov esi, edi
call fcn.00462940
cmp byte [ebx + 3], 1
jne 0x471429
mov eax, 1
jmp 0x471410
cmp byte [eax + edi + 0x12d5], 0
jne 0x471429
inc eax
cmp eax, 9
jl 0x471410
mov eax, ebp
mov esi, edi
call fcn.004629d0
mov ecx, ebp
call fcn.00460c30
movzx ecx, byte [ebx + 3]
movzx edx, byte [ecx + edi + 0x199]
mov dword [esp + 0x18], eax
cmp eax, edx
je 0x4714a0
movzx eax, byte [ebx + 3]
movzx ecx, byte [ebx + 2]
movzx edx, byte [eax + edi + 0x199]
lea ecx, [ecx + ecx*2]
lea ecx, [eax + ecx*8]
mov ecx, dword [edi + ecx*4 + 0x1c0]
push eax
mov eax, edi
call fcn.00463030
movzx ecx, byte [ebx + 2]
movzx eax, byte [ebx + 3]
lea edx, [ecx + ecx*2]
lea ecx, [eax + edx*8]
mov edx, dword [esp + 0x18]
mov ecx, dword [edi + ecx*4 + 0x1c0]
push eax
mov eax, edi
call fcn.00462f80
movzx edx, byte [ebx + 3]
mov al, byte [esp + 0x18]
mov esi, edi
mov byte [edx + edi + 0x199], al
call fcn.00460e40
mov ecx, dword [esp + 0x20]
cmp ecx, dword [edi + 0x12f4]
jne 0x4714b8
mov edx, dword [esp + 0x1c]
cmp edx, dword [edi + 0x12f8]
je 0x4714bf
mov ecx, edi
call fcn.00491600
mov eax, dword [esp + 0x14]
cmp eax, dword [edi + 0x178]
je 0x4714d2
mov esi, edi
call fcn.00490830
mov ecx, dword [esp + 0x30]
cmp ecx, dword [edi + 0x180]
je 0x4714e5
mov esi, edi
call fcn.00490960
mov edx, dword [esp + 0x34]
cmp edx, dword [edi + 0x17c]
je 0x4714f8
mov esi, edi
call fcn.00490a70
push 0
xor edx, edx
xor ecx, ecx
mov eax, edi
call fcn.00490da0
mov ecx, dword [edi + 0x582c]
mov dl, byte [ebx + 2]
mov dword [esp + 0x6a], ecx
mov cl, byte [ebx + 5]
mov eax, 0x715
mov word [esp + 0x68], ax
mov al, byte [ebx + 3]
mov byte [esp + 0x70], cl
push 0xf
lea ecx, [esp + 0x6c]
mov byte [esp + 0x72], dl
mov dx, word [ebp + 0x44]
mov byte [esp + 0x73], al
mov eax, dword [edi + 0x140]
push ecx
mov ecx, dword [0x58796c]
mov word [esp + 0x79], dx
mov dword [esp + 0x7b], eax
call fcn.004ed2d0
push 0x22
lea edx, [esp + 0xa0]
push edx
mov ecx, edi
call fcn.004ed0e0
jmp 0x471a55
mov eax, dword [esp + 0x14]
sub dword [edi + 0x140], eax
mov eax, dword [edi + 0x178]
mov edx, dword [edi + 0x12f8]
mov ecx, dword [edi + 0x12f4]
mov dword [esp + 0x34], ecx
mov ecx, dword [edi + 0x180]
mov dword [esp + 0x30], edx
mov edx, dword [edi + 0x17c]
mov dword [esp + 0x18], eax
mov al, byte [ebx + 2]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], edx
movzx edx, byte [ebx + 3]
movzx esi, al
lea ecx, [esi + esi*2]
lea ecx, [edx + ecx*8]
movzx edx, byte [ebx + 5]
mov ecx, dword [edi + ecx*4 + 0x1c0]
movzx ecx, byte [ecx + edx + 0x46]
test ecx, ecx
je 0x4715db
test al, al
jne 0x4715db
mov eax, edi
call fcn.00462c10
mov esi, edi
call fcn.00460e40
cmp byte [ebx + 2], 0
jne 0x471648
cmp byte [ebx + 3], 5
jne 0x47160d
mov eax, 1
lea esp, [esp]
cmp byte [eax + edi + 0x12cc], 0
jne 0x47160d
inc eax
cmp eax, 9
jl 0x4715f0
mov eax, dword [edi + 0x1d4]
mov esi, edi
call fcn.00462940
cmp byte [ebx + 3], 1
jne 0x471648
mov eax, 1
jmp 0x471620
cmp byte [eax + edi + 0x12d5], 0
jne 0x471648
inc eax
cmp eax, 9
jl 0x471620
movzx eax, byte [ebx + 2]
lea edx, [eax + eax*2]
shl edx, 5
mov eax, dword [edx + edi + 0x1c4]
mov esi, edi
call fcn.004629d0
mov eax, dword [esp + 0x34]
cmp eax, dword [edi + 0x12f4]
jne 0x471660
mov ecx, dword [esp + 0x30]
cmp ecx, dword [edi + 0x12f8]
je 0x471667
mov ecx, edi
call fcn.00491600
mov edx, dword [esp + 0x18]
cmp edx, dword [edi + 0x178]
je 0x47167a
mov esi, edi
call fcn.00490830
mov eax, dword [esp + 0x1c]
cmp eax, dword [edi + 0x180]
je 0x47168d
mov esi, edi
call fcn.00490960
mov ecx, dword [esp + 0x24]
cmp ecx, dword [edi + 0x17c]
je 0x4716a0
mov esi, edi
call fcn.00490a70
push 0
xor edx, edx
xor ecx, ecx
mov eax, edi
call fcn.00490da0
movzx edx, byte [ebx + 5]
mov byte [edx + ebp + 0x46], 0
mov eax, dword [ebp + 0x30]
movzx eax, word [eax + 0x4c]
cmp word [ebp + 0x44], ax
jbe 0x4716c7
mov word [ebp + 0x44], ax
mov edx, dword [edi + 0x582c]
movzx eax, byte [ebx + 2]
mov ecx, 0x715
mov word [esp + 0x38], cx
movzx ecx, byte [ebx + 3]
mov dword [esp + 0x3a], edx
mov dx, word [ebp + 0x44]
mov byte [esp + 0x3f], cl
mov ecx, dword [edi + 0x140]
mov byte [esp + 0x3e], al
movzx eax, byte [ebx + 5]
mov word [esp + 0x41], dx
push 0xf
lea edx, [esp + 0x3c]
mov dword [esp + 0x47], ecx
mov ecx, dword [0x58796c]
push edx
mov byte [esp + 0x48], al
call fcn.004ed2d0
movzx ecx, byte [ebx + 2]
mov dl, byte [ebx + 3]
xor eax, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x94], eax
mov word [esp + 0x98], ax
mov byte [esp + 0x7b], cl
movzx ecx, byte [ebx + 5]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov eax, 0x802
mov byte [esp + 0x7c], dl
mov word [esp + 0x78], ax
mov eax, dword [edi + 0x140]
push 0x22
lea edx, [esp + 0x7c]
mov byte [esp + 0x81], cl
push edx
mov ecx, edi
mov byte [esp + 0x82], 0
mov dword [esp + 0x9e], eax
call fcn.004ed0e0
lea esi, [esp + 0x1d4]
mov byte [esp + 0x261], 0
call fcn.00467f60
mov ecx, dword [ebp + 0x38]
mov edx, dword [ebp + 0x3c]
mov eax, 0x40a
mov word [esp + 0x1d4], ax
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x22f], edx
mov dword [esp + 0x22b], ecx
mov ecx, dword [eax]
add eax, 4
lea edx, [esp + 0x237]
mov dword [esp + 0x233], ecx
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4717e8
mov eax, dword [edi + 0x15bc]
xor esi, esi
cmp eax, esi
je 0x47180a
mov edx, dword [eax + 0x38]
mov dword [esp + 0x282], edx
jmp 0x471811
mov dword [esp + 0x282], esi
mov eax, dword [esp + 0x14]
mov dx, word [ebp + 0x4a]
mov ecx, dword [ebp + 0x46]
mov word [esp + 0x25b], dx
mov dword [esp + 0x286], eax
lea eax, [ebp + 0x4c]
lea edx, [esp + 0x261]
mov byte [esp + 0x28a], 0
mov dword [esp + 0x276], esi
mov dword [esp + 0x27a], esi
mov dword [esp + 0x27e], esi
mov byte [esp + 0x28b], 0
mov dword [esp + 0x257], ecx
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x471863
mov eax, dword [ebp + 0x64]
push 0xd7
lea ecx, [esp + 0x1d8]
push ecx
mov ecx, dword [0x587974]
mov dword [esp + 0x265], eax
call fcn.004ed210
cmp dword [esp + 0x20], esi
je 0x471a55
movzx eax, byte [ebx + 2]
movzx ebx, byte [ebx + 3]
mov dword [esp + 0x18], eax
cmp eax, esi
jne 0x471912
movzx eax, word [ebp + 0x44]
cmp word [edi + ebx*2 + 0x1a6], ax
je 0x4718e6
mov ecx, dword [edi + 0x582c]
mov edx, 0x70c
mov word [esp + 0x5c], dx
push 9
lea edx, [esp + 0x60]
mov dword [esp + 0x62], ecx
mov ecx, dword [0x58796c]
push edx
mov byte [esp + 0x6a], bl
mov word [esp + 0x6b], ax
call fcn.004ed2d0
xor eax, eax
push ebx
mov ecx, ebp
mov edx, edi
mov word [edi + ebx*2 + 0x1a6], ax
call fcn.00461d10
cmp ebx, 8
jge 0x471907
push ebx
mov ecx, edi
call fcn.00492c00
mov esi, edi
call fcn.00460e40
mov eax, dword [esp + 0x18]
lea ecx, [eax + eax*2]
lea edx, [ebx + ecx*8]
mov ecx, 0x702
mov word [esp + 0x50], cx
mov dword [edi + edx*4 + 0x1c0], 0
mov edx, dword [edi + 0x582c]
push 9
lea ecx, [esp + 0x54]
mov byte [esp + 0x5a], al
mov al, byte [ebp + 0x42]
push ecx
mov ecx, dword [0x58796c]
mov dword [esp + 0x5a], edx
mov byte [esp + 0x5f], bl
mov byte [esp + 0x60], al
call fcn.004ed2d0
lea esi, [esp + 0x2ac]
mov byte [esp + 0x339], 0
call fcn.00467f60
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x3c]
mov dword [esp + 0x303], eax
mov eax, dword [ebp + 0x30]
mov edx, 0x402
mov word [esp + 0x2ac], dx
mov dword [esp + 0x307], ecx
mov edx, dword [eax]
mov dword [esp + 0x30b], edx
add eax, 4
lea edx, [esp + 0x30f]
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x4719a5
mov al, byte [esp + 0x18]
mov dx, word [ebp + 0x4a]
mov ecx, dword [ebp + 0x46]
mov word [esp + 0x333], dx
mov byte [esp + 0x34e], al
lea eax, [ebp + 0x4c]
lea edx, [esp + 0x339]
mov byte [esp + 0x34f], bl
mov dword [esp + 0x32f], ecx
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x4719e3
movzx ecx, byte [ebp + 0x42]
mov eax, dword [ebp + 0x64]
push 0xa5
lea edx, [esp + 0x2b0]
mov byte [esp + 0x354], cl
mov ecx, dword [0x587974]
push edx
mov dword [esp + 0x33d], eax
call fcn.004ed210
movzx ecx, byte [esp + 0x18]
push 7
lea edx, [esp + 0x28]
mov eax, 0x206
mov byte [esp + 0x2a], cl
push edx
mov ecx, edi
mov word [esp + 0x2c], ax
mov byte [esp + 0x2f], bl
mov byte [esp + 0x30], 0
mov byte [esp + 0x31], 0
mov byte [esp + 0x32], 0
call fcn.004ed0e0
mov edi, ebp
call fcn.00411710
mov ecx, dword [esp + 0x358]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x340]
xor ecx, esp
call fcn.0051a8be
add esp, 0x350
ret
mov cl, byte [edx + 2]
movzx eax, cl
cmp eax, dword [esi + 0x130c]
push ebx
jg 0x471af6
mov bl, byte [edx + 3]
cmp bl, 0x18
jae 0x471af6
cmp cl, 6
jae 0x471af6
test cl, cl
jne 0x471aa5
cmp bl, 0xd
jae 0x471af6
movzx ecx, bl
lea eax, [eax + eax*2]
lea eax, [ecx + eax*8]
cmp dword [esi + eax*4 + 0x1c0], 0
lea eax, [esi + eax*4 + 0x1c0]
je 0x471af6
mov eax, dword [eax]
cmp byte [eax + 0x42], 1
jne 0x471af6
mov ecx, dword [eax + 0x30]
cmp dword [ecx + 0xa0], 0x18
je 0x471af6
mov al, byte [edx + 4]
test al, al
jne 0x471ae4
mov ecx, edx
mov edx, esi
pop ebx
jmp 0x46f860
cmp al, 1
jne 0x471af6
cmp byte [edx + 5], 5
ja 0x471af6
mov ecx, esi
pop ebx
jmp 0x470c50
pop ebx
ret