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

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4f2785
push eax
mov eax, 0x1480
mov dword fs:[0], esp
call fcn.004dcdf0
push ebx
push ebp
mov ebp, ecx
push esi
xor ebx, ebx
push edi
lea ecx, [esp + 0x50]
mov dword [esp + 0x7c], ebx
call fcn.0046ec80
lea ecx, [esp + 0x300]
mov dword [esp + 0x1498], ebx
call fcn.00495ed0
mov edi, dword [esp + 0x14a4]
mov byte [esp + 0x1498], 1
mov eax, dword [edi + 0x14]
cmp eax, 0xffffffff
je 0x4b200b
mov ecx, dword [ebp + 0xcc]
push ecx
push eax
lea ecx, [esp + 0x308]
call fcn.00496690
mov ebx, eax
xor esi, esi
test ebx, ebx
jle 0x4b2009
push esi
lea ecx, [esp + 0x304]
call fcn.004967d0
mov edx, dword [ebp]
lea eax, [esp + 0x50]
lea ecx, [esp + 0x7c]
push eax
push ecx
lea eax, [esp + 0x1c4]
push 0
lea ecx, [esp + 0x30c]
push eax
push ecx
mov ecx, ebp
call dword [edx + 8]
cmp eax, 1
jne 0x4b2095
inc esi
cmp esi, ebx
jl 0x4b1fca
xor ebx, ebx
mov ecx, dword [esp + 0x14a0]
mov word [ebp + 0xf8], bx
mov dword [ebp + 0x130], ecx
mov ecx, dword [ebp + 0xcc]
mov word [ebp + 0xfa], bx
mov word [ebp + 0xfc], bx
mov dx, word [edi + 0x38]
push ecx
mov word [ebp + 0x134], dx
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x3c]
push edx
lea ecx, [esp + 0x308]
mov dword [esp + 0xc4], ebx
mov dword [esp + 0x38], eax
call fcn.00496690
cmp ax, bx
jg 0x4b2114
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0046ed80
xor eax, eax
jmp 0x4b4cbd
push 0
push 1
sub esp, 0x10
mov ecx, 0x513088
mov edx, esp
mov dword [esp + 0x100], esp
push 1
push edx
call fcn.0047dbf0
sub esp, 0x10
mov ecx, 0x513088
mov eax, esp
mov dword [esp + 0xe4], esp
push 1
push eax
mov byte [esp + 0x14c8], 2
call fcn.0047dbf0
mov ecx, 0x512ab0
mov byte [esp + 0x14c0], 1
call fcn.00461540
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0046ed80
xor eax, eax
jmp 0x4b4cbd
movsx eax, ax
xor edi, edi
cmp eax, ebx
mov dword [esp + 0xa0], eax
jle 0x4b21dc
push edi
lea ecx, [esp + 0x304]
call fcn.004967d0
lea ecx, [esp + 0x300]
call fcn.00496da0
cmp eax, 8
lea ecx, [esp + 0x300]
jbe 0x4b2193
call fcn.00496da0
mov esi, eax
lea ecx, [esp + 0x300]
add word [ebp + 0xfa], si
call fcn.00496d90
lea ecx, [eax + 8]
cmp esi, ebx
mov word [ebp + 0xfc], cx
jle 0x4b21cc
mov dx, word [ebp + 0xf8]
mov eax, 1
shl eax, cl
or dx, ax
dec ecx
dec esi
jne 0x4b217c
mov word [ebp + 0xf8], dx
jmp 0x4b21cc
call fcn.00496da0
mov esi, eax
lea ecx, [esp + 0x300]
add word [ebp + 0xfa], si
call fcn.00496d90
cmp esi, ebx
mov word [ebp + 0xfc], ax
mov ecx, eax
jle 0x4b21cc
mov edx, 1
shl edx, cl
or word [ebp + 0xf8], dx
dec ecx
dec esi
jne 0x4b21ba
mov eax, dword [esp + 0xa0]
inc edi
cmp edi, eax
jl 0x4b2128
cmp eax, ebx
mov dword [esp + 0x78], ebx
jle 0x4b4c90
mov esi, ebx
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x1bc]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea ecx, [esp + 0x50]
mov edi, 1
call fcn.0046f280
push esi
lea ecx, [esp + 0x304]
call fcn.004967d0
test esi, esi
jne 0x4b225f
lea ecx, [esp + 0x300]
call fcn.00496da0
shr eax, 3
jne 0x4b2259
mov cx, word [ebp + 0xfa]
test cx, cx
jbe 0x4b2259
and ecx, 0xffff
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea ecx, [edx + eax + 1]
mov dword [ebp + 0x138], ecx
jmp 0x4b225f
mov dword [ebp + 0x138], eax
lea ecx, [esp + 0x300]
call fcn.004c7ce0
lea edx, [esp + 0xd4]
lea ebx, [ebp + 0xe4]
push edx
mov ecx, ebx
mov dword [esp + 0xd8], eax
call fcn.004b79c0
mov ecx, dword [ebx + 4]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x4b22a6
mov edx, dword [esp + 0xd4]
mov esi, dword [eax + 0xc]
cmp edx, esi
jb 0x4b22a6
lea eax, [esp + 0x14]
jmp 0x4b22b4
mov dword [esp + 0xe8], ecx
lea eax, [esp + 0xe8]
mov eax, dword [eax]
mov ecx, dword [ebp + 0xe8]
cmp eax, ecx
mov dword [esp + 0x84], eax
je 0x4b22c9
xor edi, edi
mov esi, dword [esp + 0x30]
cmp esi, 0x29
jne 0x4b22ea
cmp byte [ebp + 0xe0], 1
jbe 0x4b22ea
cmp dword [ebp + 0x168], 1
je 0x4b4c90
jmp 0x4b2307
test edi, edi
je 0x4b267f
cmp esi, 2
je 0x4b22fc
cmp esi, 3
jne 0x4b2307
mov dword [esp + 0x318], 0xff
mov eax, dword [esp + 0x14a4]
push 0
mov ecx, dword [eax + 0x4c]
push ecx
mov ecx, dword [ebp + 0xd4]
call fcn.004890d0
lea edx, [esp + 0x50]
push 0
push edx
lea eax, [esp + 0x84]
push 3
push eax
push 0
lea ecx, [esp + 0x1d0]
push 0
lea edx, [esp + 0x318]
push ecx
mov ecx, dword [ebp + 0xd4]
push edx
call fcn.0048d260
cmp eax, 1
jne 0x4b265d
lea ecx, [esp + 0x188]
call fcn.00453d60
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 3
call fcn.0046ec80
push ecx
lea ecx, [esp + 0x54]
mov eax, esp
mov dword [esp + 0x18], esp
push eax
mov byte [esp + 0x14a0], 4
call fcn.0046f1a0
lea ecx, [esp + 0x18c]
call fcn.00454080
mov cl, byte [esp + 0x50]
sub esp, 0x24
mov esi, esp
mov dword [esp + 0x38], esp
mov dword [esp + 0x38], esi
mov byte [esi], cl
mov ecx, dword [esp + 0x78]
test ecx, ecx
jne 0x4b23bc
xor eax, eax
jmp 0x4b23c5
mov eax, dword [esp + 0x7c]
sub eax, ecx
sar eax, 4
test eax, eax
jge 0x4b23cb
xor eax, eax
shl eax, 4
push eax
call fcn.004dbc04
add esp, 4
mov dword [esi + 4], eax
mov edx, dword [esp + 0x7c]
mov ecx, esi
push eax
mov eax, dword [esp + 0x7c]
push edx
push eax
call fcn.00408220
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
lea ecx, [esp + 0x84]
add esi, 0x10
push ecx
mov ecx, esi
mov byte [esp + 0x14c0], 5
call fcn.00408080
mov dl, byte [esp + 0x94]
lea ecx, [esp + 0x1b0]
mov byte [esi + 0x10], dl
mov byte [esp + 0x14bc], 4
call fcn.0046ee30
lea ecx, [esp + 0x300]
call fcn.004c7ce0
lea ecx, [esp + 0x188]
mov dword [esp + 0x114], eax
lea eax, [esp + 0x118]
push ecx
lea ecx, [esp + 0x11c]
mov dword [esp + 0x18], eax
call fcn.00453d70
mov al, byte [esp + 0x18c]
lea edx, [esp + 0x11c]
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 6
mov dword [esp + 0x20], edx
mov byte [esp + 0x11c], al
call fcn.00481290
test eax, eax
jge 0x4b248f
xor eax, eax
shl eax, 4
push eax
call fcn.004dbc04
mov ecx, dword [esp + 0x198]
mov edx, dword [esp + 0x194]
add esp, 4
mov dword [esp + 0x120], eax
push eax
push ecx
push edx
lea ecx, [esp + 0x128]
call fcn.00408220
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], eax
lea eax, [esp + 0x19c]
lea ecx, [esp + 0x12c]
push eax
mov byte [esp + 0x149c], 7
call fcn.00405d60
mov ecx, dword [esp + 0x114]
lea eax, [esp + 0x118]
mov dword [esp + 0x150], ecx
lea edx, [esp + 0x154]
push eax
lea ecx, [esp + 0x158]
mov byte [esp + 0x149c], 8
mov dword [esp + 0x18], edx
call fcn.00453d70
mov dl, byte [esp + 0x11c]
lea ecx, [esp + 0x158]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x11c]
mov byte [esp + 0x1498], 9
mov byte [esp + 0x158], dl
call fcn.00481290
test eax, eax
jge 0x4b2551
xor eax, eax
shl eax, 4
push eax
call fcn.004dbc04
mov ecx, dword [esp + 0x124]
add esp, 4
mov dword [esp + 0x15c], eax
push eax
mov eax, dword [esp + 0x128]
push eax
push ecx
lea ecx, [esp + 0x164]
call fcn.00408220
mov dword [esp + 0x160], eax
mov dword [esp + 0x164], eax
lea edx, [esp + 0x12c]
lea ecx, [esp + 0x168]
push edx
mov byte [esp + 0x149c], 0xa
call fcn.00405d60
lea eax, [esp + 0x150]
lea ecx, [esp + 0x2f8]
push eax
push ecx
mov ecx, ebx
mov byte [esp + 0x14a0], 0xb
call fcn.004b6a50
lea edx, [esp + 0x154]
mov dword [esp + 0x14], edx
lea ecx, [esp + 0x158]
mov byte [esp + 0x1498], 0xc
call fcn.0046ed80
lea ecx, [esp + 0x154]
mov byte [esp + 0x1498], 8
call fcn.00453ea0
lea eax, [esp + 0x118]
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x11c]
mov byte [esp + 0x1498], 0xd
call fcn.0046ed80
lea ecx, [esp + 0x118]
mov byte [esp + 0x1498], 4
call fcn.00453ea0
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 0xe
call fcn.0046ed80
lea ecx, [esp + 0x188]
mov byte [esp + 0x1498], 1
call fcn.00453ea0
jmp 0x4b277c
or edi, 0xffffffff
cmp eax, edi
je case.0x4b2797.13
cmp esi, 0x23
je case.0x4b2797.13
cmp esi, 0x10
jne 0x4b4d35
jmp 0x4b2783
lea ecx, [eax + 0x10]
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b26bc
mov ecx, dword [esp + 0x84]
push esi
add ecx, 0x10
call fcn.004541f0
mov edx, dword [esp + 0x84]
mov byte [esp + esi + 0x1bc], al
inc esi
lea ecx, [edx + 0x10]
call fcn.00454280
movsx eax, ax
cmp esi, eax
jl 0x4b268e
mov ecx, dword [esp + 0x84]
add ecx, 0x10
call fcn.00454280
lea ecx, [esp + 0x84]
mov dword [esp + 0x7c], eax
call fcn.004b6780
mov esi, eax
sub esp, 0x24
add esi, 8
mov eax, esp
mov dword [esp + 0x38], esp
mov dword [esp + 0x38], eax
mov dl, byte [esi]
mov byte [eax], dl
mov ecx, dword [esi + 4]
test ecx, ecx
jne 0x4b26fc
xor eax, eax
jmp 0x4b2704
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 4
test eax, eax
jge 0x4b270a
xor eax, eax
shl eax, 4
push eax
call fcn.004dbc04
mov ecx, dword [esp + 0x3c]
add esp, 4
mov edi, eax
mov dword [ecx + 4], eax
mov ecx, dword [esi + 8]
mov ebx, dword [esi + 4]
mov dword [esp + 0x44], ecx
cmp ebx, ecx
je 0x4b2745
push ebx
push edi
call fcn.004043e0
mov eax, dword [esp + 0x4c]
add ebx, 0x10
add esp, 8
add edi, 0x10
cmp ebx, eax
jne 0x4b272d
mov eax, dword [esp + 0x38]
mov dword [eax + 8], edi
mov dword [eax + 0xc], edi
add esi, 0x10
lea edi, [eax + 0x10]
push esi
mov ecx, edi
mov byte [esp + 0x14c0], 0xf
call fcn.00408080
mov dl, byte [esi + 0x10]
lea ecx, [esp + 0x74]
mov byte [edi + 0x10], dl
mov byte [esp + 0x14bc], 1
call fcn.0046ee30
mov esi, dword [esp + 0x30]
or edi, 0xffffffff
lea eax, [esi - 1]
cmp eax, 0x29
ja case.0x4b2797.13
xor ecx, ecx
mov cl, byte [eax + 0x4b4fc8]
jmp dword [ecx*4 + 0x4b4f94]
lea edx, [esp + 0x2c]
lea ecx, [esp + 0x50]
push edx
call fcn.0046f1a0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1498], 0x10
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b27e6
push esi
lea ecx, [esp + 0x30]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x2c]
inc esi
call fcn.00454280
movsx eax, ax
cmp esi, eax
jl 0x4b27c4
lea ecx, [esp + 0x300]
call fcn.00496da0
mov esi, eax
lea ecx, [esp + 0x300]
shr esi, 3
call fcn.00496da0
test al, 7
jbe 0x4b282c
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b282c
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea esi, [edx + ecx + 1]
test esi, esi
jle 0x4b29a4
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov edi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x4b28c8
xor ebx, ebx
test eax, eax
jle 0x4b29a4
cmp dword [esp + 0x30], 0x28
jne 0x4b287a
xor eax, eax
test esi, esi
jle 0x4b2876
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx + eax], 0
jne 0x4b287a
inc eax
cmp eax, esi
jl 0x4b286b
add edi, esi
jmp 0x4b28b8
push 0
push ebx
lea edx, [esp + edi + 0x1c4]
push esi
push edx
mov ecx, ebp
call fcn.004b1730
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4b29a4
and eax, 0xffff
lea ecx, [esp + 0x2c]
add edi, eax
call fcn.00454280
movsx eax, ax
cmp edi, eax
jg 0x4b29a4
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x4b2857
jmp 0x4b29a4
cmp word [ebp + 0x134], 0
jne 0x4b291f
mov eax, dword [esp + 0x30]
cmp eax, 0x28
jne 0x4b28fd
xor eax, eax
test esi, esi
jle 0x4b2a95
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx], 0
jne 0x4b2906
inc eax
inc ecx
cmp eax, esi
jge 0x4b2a95
jmp 0x4b28ec
cmp eax, 0x2a
je 0x4b4cd8
push 0
push 0
lea ecx, [esp + edi + 0x1c4]
push esi
push ecx
mov ecx, ebp
call fcn.004b1730
jmp 0x4b29a4
lea ecx, [esp + 0x2c]
xor ebx, ebx
call fcn.00454280
movsx edx, ax
xor eax, eax
mov ax, word [ebp + 0x134]
add eax, edi
cmp eax, edx
jg 0x4b29a4
mov eax, dword [esp + 0x30]
cmp eax, 0x28
jne 0x4b2961
xor eax, eax
test esi, esi
jle 0x4b295d
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx], 0
jne 0x4b296a
inc eax
inc ecx
cmp eax, esi
jl 0x4b2952
add edi, esi
jmp 0x4b2989
cmp eax, 0x2a
je 0x4b4c22
push 0
push ebx
lea ecx, [esp + edi + 0x1c4]
push esi
push ecx
mov ecx, ebp
call fcn.004b1730
xor edx, edx
mov dx, word [ebp + 0x134]
add edi, edx
inc ebx
lea ecx, [esp + 0x2c]
call fcn.00454280
xor ecx, ecx
mov cx, word [ebp + 0x134]
movsx eax, ax
add ecx, edi
cmp ecx, eax
jle 0x4b293c
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4b29bb
push eax
mov ecx, ebp
call fcn.004b0e10
cmp dword [esp + 0x30], 0xb
jne 0x4b2a95
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov cl, byte [esp + eax + 0x1bc]
test cl, cl
je 0x4b2a95
lea ecx, [esp + 0x300]
call fcn.0049ffa0
cmp byte [esp + eax + 0x1bb], 0x28
je 0x4b2a95
lea ecx, [esp + 0x300]
call fcn.0049ffa0
cmp byte [esp + eax + 0x1bb], 8
je 0x4b2a95
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov cl, byte [esp + eax + 0x1bb]
test cl, cl
je 0x4b2a95
lea ecx, [esp + 0x50]
call fcn.0046f280
lea eax, [esp + 0x50]
push 0
push eax
lea ecx, [esp + 0x84]
push 3
push ecx
mov ecx, dword [ebp + 0xd4]
push 0
lea edx, [esp + 0x1d0]
push 0
lea eax, [esp + 0x318]
push edx
push eax
call fcn.0048d260
mov eax, dword [esp + 0xbc]
mov byte [esp + 0x1498], 1
inc eax
lea ecx, [esp + 0x2c]
cmp eax, 0xff
mov dword [esp + 0xbc], eax
jg 0x4b4c03
call fcn.00453ea0
jmp case.0x4b2797.1
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x2c]
jmp 0x4b4c03
mov ecx, dword [ebp + 0xd4]
call fcn.004882e0
lea ecx, [esp + 0x300]
call fcn.00496da0
shr eax, 3
mov dword [esp + 0x14], eax
jne 0x4b2aef
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b2aef
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx + 1]
mov dword [esp + 0x14], edx
xor ebx, ebx
xor edi, edi
mov dword [esp + 0x1c], ebx
push 0
lea ecx, [esp + 0x54]
call fcn.0046f250
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4b2b71
mov eax, dword [eax + 8]
sub eax, ecx
sar eax, 2
cmp edi, eax
jae 0x4b2b71
xor esi, esi
lea ecx, [esp + 0x50]
push esi
call fcn.0046f250
mov eax, dword [eax + 4]
lea ecx, [eax + edi*4]
call fcn.00454280
test ax, ax
jle 0x4b2b6e
push 0
lea ecx, [esp + 0x54]
call fcn.0046f250
mov eax, dword [eax + 4]
push esi
lea ecx, [eax + edi*4]
call fcn.004541f0
mov byte [esp + ebx + 0x1bc], al
inc ebx
push 0
lea ecx, [esp + 0x54]
inc esi
call fcn.0046f250
mov eax, dword [eax + 4]
lea ecx, [eax + edi*4]
call fcn.00454280
movsx ecx, ax
cmp esi, ecx
jl 0x4b2b31
inc edi
jmp 0x4b2af7
mov edi, dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
test edi, edi
jle 0x4b2db3
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov esi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
mov dword [esp + 0x20], esi
je 0x4b2c6c
xor ebx, ebx
test eax, eax
jle 0x4b2db3
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jge 0x4b2db3
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x4b2be0
mov edx, ecx
lea esi, [esp + eax + 0x1bc]
lea edi, [esp + 0x2bc]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
test ebx, ebx
jne 0x4b2bf0
cmp dword [esp + 0x30], 3
jne 0x4b2bf0
dec eax
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x2bc]
cmp al, 0xff
jne 0x4b2c0b
cmp byte [esp + 0x2bd], 0xff
je 0x4b2db3
jmp 0x4b2c1e
test al, al
jne 0x4b2c1e
mov al, byte [esp + 0x2bd]
test al, al
je 0x4b2db3
push 0
lea ecx, [esp + 0x54]
call fcn.0046f250
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x2bc]
lea eax, [eax + ebx*4]
push eax
push ebx
push ecx
push edx
mov ecx, ebp
call fcn.004b1730
mov edx, dword [esp + 0x20]
xor eax, eax
mov ax, word [ebp + 0x134]
add edx, eax
mov eax, dword [ebp + 0x130]
inc ebx
mov dword [esp + 0x20], edx
cmp ebx, eax
jl 0x4b2bac
jmp 0x4b2db3
push 0
lea ecx, [esp + 0x54]
mov dword [esp + 0x28], 0
call fcn.0046f250
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4b2db3
mov edx, dword [eax + 8]
sub edx, ecx
sar edx, 2
je 0x4b2db3
add esi, edi
cmp esi, ebx
jg 0x4b2db3
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x4b2cca
mov eax, ecx
lea esi, [esp + ebx + 0x1bc]
lea edi, [esp + 0x2d0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x4b2cda
cmp dword [esp + 0x30], 3
jne 0x4b2cda
dec ebx
mov al, byte [esp + 0x2d0]
cmp al, 0xff
jne 0x4b2cf5
cmp byte [esp + 0x2d1], 0xff
je 0x4b2db3
jmp 0x4b2d08
test al, al
jne 0x4b2d08
mov al, byte [esp + 0x2d1]
test al, al
je 0x4b2db3
push 0
lea ecx, [esp + 0x54]
call fcn.0046f250
mov eax, dword [eax + 4]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
lea edx, [esp + 0x2d0]
lea ecx, [eax + esi*4]
push ecx
push esi
push edi
push edx
mov ecx, ebp
call fcn.004b1730
cmp word [ebp + 0x134], 0
jne 0x4b2d75
push 0
lea ecx, [esp + 0x54]
call fcn.0046f250
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4b2d5b
mov eax, dword [eax + 8]
sub eax, ecx
and al, 0xfc
cmp eax, 4
je 0x4b2db3
push 0
lea ecx, [esp + 0x54]
call fcn.0046f250
mov ecx, dword [eax + 4]
call fcn.00454280
mov word [ebp + 0x134], ax
xor ecx, ecx
push 0
mov cx, word [ebp + 0x134]
add ebx, ecx
lea ecx, [esp + 0x54]
call fcn.0046f250
mov ecx, dword [eax + 4]
call fcn.00454280
movsx ecx, ax
mov eax, ebx
cdq
idiv ecx
cmp eax, esi
jle 0x4b2da4
inc esi
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x1c]
lea edx, [ebx + edi]
cmp edx, eax
jle 0x4b2ca6
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je case.0x4b2797.13
push eax
mov ecx, ebp
call fcn.004b0e10
jmp case.0x4b2797.13
lea ecx, [esp + 0x300]
call fcn.0049ffa0
lea ecx, [esp + 0x80]
mov edi, eax
push ecx
lea ecx, [esp + 0x54]
mov dword [esp + 0x18], edi
call fcn.0046f1a0
lea ecx, [esp + 0x80]
mov byte [esp + 0x1498], 0x11
xor ebx, ebx
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b2e3b
push esi
lea ecx, [esp + 0x84]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x80]
inc esi
call fcn.00454280
movsx edx, ax
cmp esi, edx
jl 0x4b2e13
lea ecx, [esp + 0x300]
call fcn.00496da0
shr eax, 3
mov dword [esp + 0x20], eax
jne 0x4b2e79
mov ax, word [ebp + 0xfa]
cmp ax, bx
jbe 0x4b2e79
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea ecx, [edx + eax + 1]
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x30]
sub eax, 4
je 0x4b30dc
dec eax
je 0x4b2f97
sub eax, 2
jne 0x4b31c3
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x4b31c3
cmp dword [ebp + 0x130], 0xffffffff
je 0x4b2f21
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x4b31c3
lea edi, [esp + edi + 0x1bc]
mov edx, dword [esp + 0x1c]
xor ebx, ebx
mov al, byte [edi + edx]
mov byte [esp + 0x13], al
mov dl, byte [esp + 0x13]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4b2f05
mov al, byte [esp + 0x14]
mov cl, byte [esp + 0x1c]
add al, cl
push 0
push 0
lea ecx, [esp + 0x184]
push 2
push ecx
mov ecx, ebp
mov byte [esp + 0x18c], al
mov byte [esp + 0x18d], bl
call fcn.004b1730
inc ebx
cmp ebx, 8
jl 0x4b2ecb
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x4b2ebe
jmp 0x4b31c3
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x4b31c3
lea edi, [esp + edi + 0x1bc]
mov edx, dword [esp + 0x24]
xor ebx, ebx
mov al, byte [edi + edx]
mov byte [esp + 0x13], al
mov dl, byte [esp + 0x13]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4b2f7b
mov al, byte [esp + 0x24]
mov cl, byte [esp + 0x14]
add al, cl
push 0
push 0
lea ecx, [esp + 0x1b8]
push 2
push ecx
mov ecx, ebp
mov byte [esp + 0x1c0], al
mov byte [esp + 0x1c1], bl
call fcn.004b1730
inc ebx
cmp ebx, 8
jl 0x4b2f41
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x4b2f34
jmp 0x4b31c3
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x4b31c3
cmp dword [ebp + 0x130], 0xffffffff
je 0x4b3048
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x4b31c3
lea esi, [esp + 0x1bc]
jmp 0x4b2fc9
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
lea eax, [edi + edx]
mov cl, byte [eax + esi]
and eax, 0x80000001
mov byte [esp + 0x13], cl
jns 0x4b2fe3
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4b3022
xor ebx, ebx
mov dl, byte [esp + 0x13]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4b301a
mov al, byte [esp + 0x14]
mov dl, byte [esp + 0x1c]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x23]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x2b], al
call fcn.004b1730
inc ebx
cmp ebx, 8
jl 0x4b2fe7
jmp 0x4b3032
push 0
push 0
push 0x9901
mov ecx, ebp
call fcn.004b0ed0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x4b2fc5
jmp 0x4b31c3
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x4b31c3
lea edi, [esp + 0x1bc]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
add eax, ecx
mov dl, byte [eax + edi]
and eax, 0x80000001
mov byte [esp + 0x1b], dl
jns 0x4b3078
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4b30b6
xor ebx, ebx
mov al, byte [esp + 0x1b]
mov cl, bl
shr al, cl
test al, 1
je 0x4b30ae
mov al, byte [esp + 0x24]
mov dl, byte [esp + 0x14]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x1b]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x23], al
call fcn.004b1730
inc ebx
cmp ebx, 8
jl 0x4b307c
jmp 0x4b30c6
push 0
push 0
push 0x9901
mov ecx, ebp
call fcn.004b0ed0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x4b305b
jmp 0x4b31c3
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x4b31c3
cmp dword [ebp + 0x130], 0xffffffff
je 0x4b315d
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x4b31c3
lea edi, [esp + edi + 0x1bc]
mov eax, dword [esp + 0x1c]
xor ebx, ebx
mov cl, byte [edi + eax]
mov byte [esp + 0x1b], cl
mov dl, byte [esp + 0x1b]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4b3144
mov al, byte [esp + 0x14]
mov dl, byte [esp + 0x1c]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x1b]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x23], al
call fcn.004b1730
inc ebx
cmp ebx, 8
jl 0x4b3111
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x4b3104
jmp 0x4b31c3
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x4b31c3
lea edi, [esp + edi + 0x1bc]
mov eax, dword [esp + 0x24]
xor ebx, ebx
mov cl, byte [edi + eax]
mov byte [esp + 0x1b], cl
mov dl, byte [esp + 0x1b]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4b31ac
mov al, byte [esp + 0x24]
mov dl, byte [esp + 0x14]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x1b]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x23], al
call fcn.004b1730
inc ebx
cmp ebx, 8
jl 0x4b3179
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x4b316c
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je 0x4b31da
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x80]
jmp 0x4b4c03
lea ecx, [esp + 0x88]
push ecx
lea ecx, [esp + 0x54]
call fcn.0046f1a0
lea ecx, [esp + 0x88]
mov byte [esp + 0x1498], 0x12
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b3242
push esi
lea ecx, [esp + 0x8c]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x88]
inc esi
call fcn.00454280
movsx edx, ax
cmp esi, edx
jl 0x4b321a
lea ecx, [esp + 0x300]
call fcn.00496da0
shr eax, 3
mov dword [esp + 0x14], eax
jne 0x4b3284
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b343c
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea eax, [edx + eax + 1]
mov dword [esp + 0x14], eax
test eax, eax
jle 0x4b343c
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov cl, byte [esp + 0x2b]
mov dword [esp + 0x20], eax
mov byte [esp + 0xd8], cl
mov edi, 0x512a68
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0xe0], esi
mov ebx, ecx
lea ecx, [esp + 0xdc]
push ebx
mov dword [esp + 0xe8], esi
mov dword [esp + 0xec], esi
call fcn.00401d50
test al, al
je 0x4b3312
mov edi, dword [esp + 0xdc]
mov ecx, ebx
mov edx, ecx
mov esi, 0x512a68
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xe0], ebx
xor esi, esi
mov byte [eax + ebx], 0
mov eax, dword [esp + 0x14]
xor edi, edi
cmp eax, esi
jle 0x4b33f5
mov ecx, dword [esp + 0x20]
lea edx, [esp + ecx + 0x1bc]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
xor esi, esi
xor ebx, ebx
mov cl, byte [eax + edi]
mov byte [esp + 0x1b], cl
mov dl, byte [esp + 0x1b]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4b33de
mov al, byte [esp + 0x2b]
mov dword [esp + 0xf0], esi
mov byte [esp + 0xec], al
mov dword [esp + 0xf4], esi
mov dword [esp + 0xf8], esi
lea ecx, [esp + 0xec]
mov byte [esp + 0x1498], 0x14
push ecx
lea ecx, [esp + 0x304]
call fcn.00496c40
mov edx, dword [esp + 0xf0]
mov cl, bl
inc cl
push esi
mov al, byte [edx]
push esi
lea edx, [esp + 0x2ec]
mov byte [esp + 0x2ed], cl
push 2
push edx
mov ecx, ebp
mov byte [esp + 0x2f4], al
call fcn.004b1730
mov eax, dword [esp + 0xf0]
push eax
call fcn.004db420
add esp, 4
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf4], esi
mov dword [esp + 0xf8], esi
inc ebx
cmp ebx, 8
jl 0x4b333e
mov eax, dword [esp + 0x14]
inc edi
cmp edi, eax
jl 0x4b332f
mov eax, dword [esp + 0xdc]
xor esi, esi
cmp eax, esi
mov byte [esp + 0x1498], 0x12
je 0x4b3427
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x4b341e
cmp al, 0xff
je 0x4b341e
dec al
mov byte [ecx], al
jmp 0x4b3427
push ecx
call fcn.004db420
add esp, 4
mov dword [esp + 0xdc], esi
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe4], esi
mov ecx, dword [esp + 0x14a4]
mov eax, dword [ecx + 0x20]
cmp eax, 0xffffffff
je 0x4b3453
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x88]
jmp 0x4b4c03
cmp dword [ebp + 0x130], edi
je 0x4b4d42
mov byte [esp + 0xb4], 1
lea edx, [esp + 0x40]
lea ecx, [esp + 0x50]
push edx
call fcn.0046f1a0
lea ecx, [esp + 0x40]
mov byte [esp + 0x1498], 0x15
call fcn.00454280
test ax, ax
jle 0x4b3570
lea ecx, [esp + 0x40]
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b34d5
push esi
lea ecx, [esp + 0x44]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x40]
inc esi
call fcn.00454280
movsx eax, ax
cmp esi, eax
jl 0x4b34b3
lea ecx, [esp + 0x300]
call fcn.00496da0
mov ebx, eax
shr ebx, 3
jne 0x4b350d
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b3570
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea ebx, [edx + ecx + 1]
test ebx, ebx
jle 0x4b3570
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov esi, eax
mov eax, dword [ebp + 0x130]
test eax, eax
jle 0x4b3570
xor edi, edi
test eax, eax
jle 0x4b3570
push 0
push edi
lea edx, [esp + esi + 0x1c4]
push ebx
push edx
mov ecx, ebp
call fcn.004b1730
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4b3570
and eax, 0xffff
lea ecx, [esp + 0x40]
add esi, eax
call fcn.00454280
movsx eax, ax
cmp esi, eax
jg 0x4b3570
mov eax, dword [ebp + 0x130]
inc edi
cmp edi, eax
jl 0x4b352f
mov ecx, dword [esp + 0xb4]
mov eax, dword [ebp + 0x130]
and ecx, 0xff
cmp ecx, eax
jge 0x4b36b7
mov dl, byte [esp + 0x2b]
xor esi, esi
mov byte [esp + 0x8c], dl
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
lea eax, [esp + 0x8c]
lea ecx, [esp + 0x300]
push eax
mov byte [esp + 0x149c], 0x16
call fcn.00496c40
mov ecx, dword [esp + 0x90]
cmp ecx, esi
jne 0x4b35d8
xor eax, eax
jmp 0x4b35e1
mov eax, dword [esp + 0x94]
sub eax, ecx
mov bl, byte [ecx + eax - 1]
inc bl
mov byte [ecx + eax - 1], bl
lea ecx, [esp + 0x8c]
push ecx
lea ecx, [esp + 0x304]
call fcn.00496a70
mov cl, byte [esp + 0xb4]
lea edx, [esp + 0x50]
push esi
inc cl
push edx
lea eax, [esp + 0x84]
push 3
mov byte [esp + 0xc0], cl
push eax
push esi
lea ecx, [esp + 0x1d0]
push esi
lea edx, [esp + 0x318]
push ecx
mov ecx, dword [ebp + 0xd4]
push edx
call fcn.0048d260
cmp eax, 1
je 0x4b367c
cmp eax, 0xffffffff
jne 0x4b4d6d
mov eax, dword [esp + 0x90]
mov byte [esp + 0x1498], 0x15
push eax
call fcn.004db420
add esp, 4
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
jmp 0x4b3570
mov ecx, dword [esp + 0x90]
push ecx
call fcn.004db420
add esp, 4
lea ecx, [esp + 0x40]
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
mov byte [esp + 0x1498], 1
call fcn.00453ea0
jmp 0x4b347b
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4b36ce
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x40]
jmp 0x4b4c03
lea eax, [esp + 0x34]
lea ecx, [esp + 0x50]
push eax
call fcn.0046f1a0
xor ebx, ebx
lea ecx, [esp + 0x34]
mov byte [esp + 0x1498], 0x17
mov dword [esp + 0x24], ebx
call fcn.00454280
test ax, ax
jle 0x4b372f
push ebx
lea ecx, [esp + 0x38]
call fcn.004541f0
mov byte [esp + ebx + 0x1bc], al
lea ecx, [esp + 0x34]
inc ebx
call fcn.00454280
movsx ecx, ax
cmp ebx, ecx
jl 0x4b3709
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x300]
call fcn.00496da0
mov edi, eax
shr edi, 3
mov dword [esp + 0x14], edi
jne 0x4b3773
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b41cb
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea edi, [edx + eax + 1]
mov dword [esp + 0x14], edi
test edi, edi
jle 0x4b41cb
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov ecx, eax
mov eax, esi
sub eax, 0x14
mov dword [esp + 0x1c], ecx
je 0x4b3e83
dec eax
je 0x4b3b20
dec eax
jne 0x4b41cb
mov eax, dword [0x514d00]
test eax, eax
jne 0x4b395d
mov dl, 0x10
cmp ecx, ebx
mov dword [0x514d00], 1
mov byte [esp + 0x13], dl
jge 0x4b41cb
jmp 0x4b37d1
mov edi, dword [esp + 0x14]
cmp edi, 2
jne 0x4b37ef
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4b3801
cmp edi, 1
jne 0x4b4ddf
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
jne 0x4b3832
mov eax, dword [ebp + 0x38]
test eax, eax
je 0x4b41cb
mov edx, dword [ebp + 0x3c]
sub edx, eax
mov eax, 0x6bca1af3
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x4b41cb
jmp 0x4b3933
movzx si, dl
sub dl, 0x10
push 0
and edx, 0xff
mov ecx, ebp
push edx
push esi
call fcn.004b0ed0
and esi, 0xffff
lea ecx, [esp + 0xac]
push esi
push 0x507ad4
push ecx
call fcn.004dbc12
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4b3871
xor edx, edx
jmp 0x4b3887
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xac]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x4b38b5
call fcn.004db42b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4b38da
mov al, byte [ecx - 1]
test al, al
je 0x4b38da
cmp al, 0xff
je 0x4b38da
test ebx, ebx
jne 0x4b38fe
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004019e0
jmp 0x4b392f
test ebx, ebx
jne 0x4b38e9
push 1
mov ecx, esi
call fcn.004019e0
jmp 0x4b392f
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4b38f5
cmp eax, ebx
jae 0x4b3906
push 1
mov ecx, esi
call fcn.004019e0
push ebx
mov ecx, esi
call fcn.004025d0
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xac]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0x13]
xor eax, eax
mov ax, word [ebp + 0x134]
inc dl
add ecx, eax
mov eax, dword [esp + 0x24]
cmp ecx, eax
mov byte [esp + 0x13], dl
mov dword [esp + 0x1c], ecx
jl 0x4b37cd
jmp 0x4b41cb
cmp eax, 1
jne 0x4b41cb
mov eax, dword [ebp + 0x38]
test eax, eax
je 0x4b41cb
mov edx, dword [ebp + 0x3c]
sub edx, eax
mov eax, 0x6bca1af3
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x4b41cb
xor dl, dl
mov dword [0x514d00], 0
mov byte [esp + 0x9c], dl
jmp 0x4b39aa
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4b41cb
cmp edi, 2
jne 0x4b39d0
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4b39e2
cmp edi, 1
jne 0x4b4ddf
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x4b3af3
mov ecx, dword [esp + 0x9c]
add dl, 0x20
movzx si, dl
and ecx, 0xff
push 0
push ecx
push esi
mov ecx, ebp
call fcn.004b0ed0
and esi, 0xffff
lea edx, [esp + 0x10c]
push esi
push 0x507ad4
push edx
call fcn.004dbc12
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4b3a31
xor edx, edx
jmp 0x4b3a47
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0x10c]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x4b3a75
call fcn.004db42b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4b3a9a
mov al, byte [ecx - 1]
test al, al
je 0x4b3a9a
cmp al, 0xff
je 0x4b3a9a
test ebx, ebx
jne 0x4b3abe
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004019e0
jmp 0x4b3aef
test ebx, ebx
jne 0x4b3aa9
push 1
mov ecx, esi
call fcn.004019e0
jmp 0x4b3aef
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4b3ab5
cmp eax, ebx
jae 0x4b3ac6
push 1
mov ecx, esi
call fcn.004019e0
push ebx
mov ecx, esi
call fcn.004025d0
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0x10c]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0x9c]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
inc dl
cmp dl, 0xff
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x9c], dl
jb 0x4b39a2
jmp 0x4b41cb
mov eax, dword [0x514d00]
test eax, eax
jne 0x4b3ce6
xor dl, dl
mov dword [0x514d00], 1
mov byte [esp + 0x13], dl
mov byte [esp + 0xb0], dl
jmp 0x4b3b52
mov ebx, dword [esp + 0x24]
mov dl, byte [esp + 0x13]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4b41cb
cmp edi, 2
jne 0x4b3b78
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4b3b8a
cmp edi, 1
jne 0x4b4ddf
movzx ax, byte [esp + ecx + 0x1bc]
cmp ax, 1
jbe 0x4b3ca7
test dl, dl
jne 0x4b3ba2
cmp ax, 0x10
sbb esi, esi
neg esi
jmp 0x4b3ba6
movzx si, dl
mov ecx, dword [esp + 0xb0]
push 0
and ecx, 0xff
push ecx
push esi
mov ecx, ebp
call fcn.004b0ed0
and esi, 0xffff
lea edx, [esp + 0xd0]
push esi
push 0x507ad4
push edx
call fcn.004dbc12
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4b3be5
xor edx, edx
jmp 0x4b3bfb
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xd0]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x4b3c29
call fcn.004db42b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4b3c4e
mov al, byte [ecx - 1]
test al, al
je 0x4b3c4e
cmp al, 0xff
je 0x4b3c4e
test ebx, ebx
jne 0x4b3c72
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004019e0
jmp 0x4b3ca3
test ebx, ebx
jne 0x4b3c5d
push 1
mov ecx, esi
call fcn.004019e0
jmp 0x4b3ca3
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4b3c69
cmp eax, ebx
jae 0x4b3c7a
push 1
mov ecx, esi
call fcn.004019e0
push ebx
mov ecx, esi
call fcn.004025d0
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xd0]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov al, byte [esp + 0x13]
test al, al
jne 0x4b3cb6
mov byte [esp + 0x13], 2
jmp 0x4b3cba
inc byte [esp + 0x13]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
mov al, byte [esp + 0xb0]
inc al
mov dword [esp + 0x1c], ecx
cmp al, 8
mov byte [esp + 0xb0], al
jb 0x4b3b46
jmp 0x4b41cb
cmp eax, 1
jne 0x4b41cb
xor dl, dl
mov dword [0x514d00], 0
mov byte [esp + 0xc0], dl
jmp 0x4b3d0c
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4b41cb
cmp edi, 2
jne 0x4b3d32
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4b3d44
cmp edi, 1
jne 0x4b4ddf
movzx ax, byte [esp + ecx + 0x1bc]
cmp ax, 1
jbe 0x4b3e56
mov ecx, dword [esp + 0xc0]
add dl, 9
movzx si, dl
and ecx, 0xff
push 0
push ecx
push esi
mov ecx, ebp
call fcn.004b0ed0
and esi, 0xffff
lea edx, [esp + 0x104]
push esi
push 0x507ad4
push edx
call fcn.004dbc12
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4b3d94
xor edx, edx
jmp 0x4b3daa
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0x104]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x4b3dd8
call fcn.004db42b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4b3dfd
mov al, byte [ecx - 1]
test al, al
je 0x4b3dfd
cmp al, 0xff
je 0x4b3dfd
test ebx, ebx
jne 0x4b3e21
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004019e0
jmp 0x4b3e52
test ebx, ebx
jne 0x4b3e0c
push 1
mov ecx, esi
call fcn.004019e0
jmp 0x4b3e52
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4b3e18
cmp eax, ebx
jae 0x4b3e29
push 1
mov ecx, esi
call fcn.004019e0
push ebx
mov ecx, esi
call fcn.004025d0
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0x104]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0xc0]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
inc dl
cmp dl, 8
mov dword [esp + 0x1c], ecx
mov byte [esp + 0xc0], dl
jb 0x4b3d04
jmp 0x4b41cb
mov eax, dword [0x514d00]
test eax, eax
jne 0x4b4034
mov dl, 1
mov dword [0x514d00], 1
mov byte [esp + 0x13], dl
mov byte [esp + 0xb8], al
jmp 0x4b3eb1
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4b41cb
cmp edi, 2
jne 0x4b3ed7
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4b3ee9
cmp edi, 1
jne 0x4b4ddf
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x4b3ffe
cmp dl, 9
movzx si, dl
jne 0x4b3efd
xor esi, esi
mov ecx, dword [esp + 0xb8]
push 0
and ecx, 0xff
push ecx
push esi
mov ecx, ebp
call fcn.004b0ed0
and esi, 0xffff
lea edx, [esp + 0xcc]
push esi
push 0x507ad4
push edx
call fcn.004dbc12
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4b3f3c
xor edx, edx
jmp 0x4b3f52
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xcc]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x4b3f80
call fcn.004db42b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4b3fa5
mov al, byte [ecx - 1]
test al, al
je 0x4b3fa5
cmp al, 0xff
je 0x4b3fa5
test ebx, ebx
jne 0x4b3fc9
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004019e0
jmp 0x4b3ffa
test ebx, ebx
jne 0x4b3fb4
push 1
mov ecx, esi
call fcn.004019e0
jmp 0x4b3ffa
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4b3fc0
cmp eax, ebx
jae 0x4b3fd1
push 1
mov ecx, esi
call fcn.004019e0
push ebx
mov ecx, esi
call fcn.004025d0
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xcc]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0x13]
xor eax, eax
mov ax, word [ebp + 0x134]
inc dl
add ecx, eax
mov al, byte [esp + 0xb8]
inc al
mov byte [esp + 0x13], dl
cmp al, 9
mov dword [esp + 0x1c], ecx
mov byte [esp + 0xb8], al
jb 0x4b3ea9
jmp 0x4b41cb
cmp eax, 1
jne 0x4b41cb
xor dl, dl
mov dword [0x514d00], 0
mov byte [esp + 0xa4], dl
jmp 0x4b405a
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4b41cb
cmp edi, 2
jne 0x4b4080
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4b4092
cmp edi, 1
jne 0x4b4ddf
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x4b41a3
mov ecx, dword [esp + 0xa4]
add dl, 9
movzx si, dl
and ecx, 0xff
push 0
push ecx
push esi
mov ecx, ebp
call fcn.004b0ed0
and esi, 0xffff
lea edx, [esp + 0xfc]
push esi
push 0x507ad4
push edx
call fcn.004dbc12
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4b40e1
xor edx, edx
jmp 0x4b40f7
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea ecx, [edx + edx*8]
lea edi, [esp + 0xfc]
xor eax, eax
mov ebx, dword [ebp + 0x38]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea ebx, [ebx + edx*4 - 0x4c]
mov esi, ecx
cmp esi, 0xfffffffd
mov dword [esp + 0x20], esi
jbe 0x4b4125
call fcn.004db42b
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x4b414a
mov al, byte [ecx - 1]
test al, al
je 0x4b414a
cmp al, 0xff
je 0x4b414a
test esi, esi
jne 0x4b416e
dec al
push esi
mov byte [ecx - 1], al
mov ecx, ebx
call fcn.004019e0
jmp 0x4b419f
test esi, esi
jne 0x4b4159
push 1
mov ecx, ebx
call fcn.004019e0
jmp 0x4b419f
mov eax, dword [ebx + 0xc]
cmp eax, 0x1f
ja 0x4b4165
cmp eax, esi
jae 0x4b4176
push 1
mov ecx, ebx
call fcn.004019e0
push esi
mov ecx, ebx
call fcn.004025d0
mov eax, dword [esp + 0x20]
mov edi, dword [ebx + 4]
mov ecx, eax
lea esi, [esp + 0xfc]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [ebx + 8], eax
mov ebx, dword [ebx + 4]
add ebx, eax
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0xa4]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
inc dl
cmp dl, 6
mov dword [esp + 0x1c], ecx
mov byte [esp + 0xa4], dl
jb 0x4b4052
mov ecx, dword [esp + 0x14a4]
mov eax, dword [ecx + 0x20]
cmp eax, 0xffffffff
je 0x4b41e2
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x34]
jmp 0x4b4c03
lea edx, [esp + 0x74]
lea ecx, [esp + 0x50]
push edx
call fcn.0046f1a0
xor ebx, ebx
lea ecx, [esp + 0x74]
mov byte [esp + 0x1498], 0x18
mov dword [esp + 0x24], ebx
call fcn.00454280
test ax, ax
jle 0x4b4243
push ebx
lea ecx, [esp + 0x78]
call fcn.004541f0
mov byte [esp + ebx + 0x1bc], al
lea ecx, [esp + 0x74]
inc ebx
call fcn.00454280
movsx eax, ax
cmp ebx, eax
jl 0x4b421d
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x300]
call fcn.00496da0
shr eax, 3
jne 0x4b427d
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b4e1f
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea eax, [edx + ecx + 1]
cmp eax, 2
jne 0x4b4e1f
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov edi, eax
mov dword [esp + 0x20], 0
cmp edi, ebx
mov dword [esp + 0x14], edi
jge 0x4b4474
mov al, byte [esp + edi + 0x1bc]
lea esi, [esp + edi + 0x1bc]
cmp al, 0x40
jbe 0x4b43db
cmp al, 0xa0
je 0x4b42dc
and eax, 0xff
sub eax, 0x40
and eax, 0x8000001f
jns 0x4b42d6
dec eax
or eax, 0xffffffe0
inc eax
je 0x4b43db
mov edx, dword [esp + 0x20]
push 0
push edx
push 1
push esi
mov ecx, ebp
call fcn.004b1730
xor eax, eax
lea ecx, [esp + 0xc4]
mov al, byte [esi]
push eax
push 0x507ad4
push ecx
call fcn.004dbc12
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4b4312
xor edx, edx
jmp 0x4b4328
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xc4]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x1c], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x4b4356
call fcn.004db42b
mov edx, dword [esi + 4]
xor ecx, ecx
cmp edx, ecx
je 0x4b437e
mov al, byte [edx - 1]
test al, al
je 0x4b437e
cmp al, 0xff
je 0x4b437e
cmp ebx, ecx
jne 0x4b43a2
dec al
mov byte [edx - 1], al
mov dword [esi + 4], ecx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ecx
jmp 0x4b43d3
cmp ebx, ecx
jne 0x4b438d
push 1
mov ecx, esi
call fcn.004019e0
jmp 0x4b43d3
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4b4399
cmp eax, ebx
jae 0x4b43aa
push 1
mov ecx, esi
call fcn.004019e0
push ebx
mov ecx, esi
call fcn.004025d0
mov eax, dword [esp + 0x1c]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xc4]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
mov al, byte [esp + edi + 0x1bd]
lea esi, [esp + edi + 0x1bd]
cmp al, 0x40
jbe 0x4b4454
cmp al, 0xa0
je 0x4b4407
and eax, 0xff
sub eax, 0x40
and eax, 0x8000001f
jns 0x4b4405
dec eax
or eax, 0xffffffe0
inc eax
je 0x4b4454
mov eax, dword [esp + 0x20]
push 0
push eax
push 1
push esi
mov ecx, ebp
call fcn.004b1730
xor ecx, ecx
lea edx, [esp + 0xc4]
mov cl, byte [esi]
push ecx
push 0x507ad4
push edx
call fcn.004dbc12
add esp, 0xc
lea esi, [ebp + 0x34]
lea eax, [esp + 0xc4]
mov ecx, esi
push eax
call fcn.004b6730
dec eax
mov ecx, esi
push eax
call fcn.004b6760
mov ecx, eax
call fcn.00494e90
xor ecx, ecx
mov cx, word [ebp + 0x134]
add edi, ecx
mov ecx, dword [esp + 0x20]
inc ecx
cmp edi, ebx
mov dword [esp + 0x14], edi
mov dword [esp + 0x20], ecx
jl 0x4b42a8
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x74]
jmp 0x4b4c03
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x50]
push edx
call fcn.0046f1a0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1498], 0x19
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b44cd
push esi
lea ecx, [esp + 0x50]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x4c]
inc esi
call fcn.00454280
movsx eax, ax
cmp esi, eax
jl 0x4b44ab
lea ecx, [esp + 0x300]
call fcn.00496da0
mov ebx, eax
shr ebx, 3
mov dword [esp + 0x14], ebx
jne 0x4b4513
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b4620
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx + 1]
mov dword [esp + 0x14], edx
mov ebx, edx
test ebx, ebx
jle 0x4b4620
lea ecx, [esp + 0x300]
call fcn.0049ffa0
cmp word [ebp + 0x134], 0
mov esi, eax
jne 0x4b4590
test ebx, ebx
jle 0x4b4620
mov edi, ebx
mov al, byte [esp + esi + 0x1bc]
test al, al
je 0x4b4587
xor ebx, ebx
mov al, byte [esp + esi + 0x1bc]
mov cl, bl
shr al, cl
test al, 1
je 0x4b4581
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, 0x1f
jne 0x4b4569
lea eax, [ebx + esi*8]
jmp 0x4b4575
cmp ecx, 0x1e
jne 0x4b4575
mov eax, esi
shl eax, 8
add eax, ebx
push 0
push 0
push eax
mov ecx, ebp
call fcn.004b0ed0
inc ebx
cmp ebx, 8
jl 0x4b454a
inc esi
dec edi
jne 0x4b453d
jmp 0x4b4620
lea ecx, [esp + 0x4c]
xor edi, edi
call fcn.00454280
movsx ecx, ax
cmp esi, ecx
jge 0x4b4620
test ebx, ebx
jle 0x4b4604
mov dword [esp + 0x20], ebx
mov al, byte [esp + esi + 0x1bc]
test al, al
je 0x4b45f8
xor ebx, ebx
mov dl, byte [esp + esi + 0x1bc]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4b45ee
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, 0x1f
jne 0x4b45d7
lea eax, [ebx + esi*8]
jmp 0x4b45e3
cmp ecx, 0x1e
jne 0x4b45e3
mov eax, esi
shl eax, 8
add eax, ebx
push 0
push edi
push eax
mov ecx, ebp
call fcn.004b0ed0
inc ebx
cmp ebx, 8
jl 0x4b45b7
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
inc esi
dec eax
mov dword [esp + 0x20], eax
jne 0x4b45aa
xor eax, eax
lea ecx, [esp + 0x4c]
mov ax, word [ebp + 0x134]
add esi, eax
inc edi
call fcn.00454280
movsx ecx, ax
cmp esi, ecx
jl 0x4b45a2
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4b4637
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x4c]
jmp 0x4b4c03
lea eax, [esp + 0x38]
lea ecx, [esp + 0x50]
push eax
mov dword [ebp + 0x15c], 1
call fcn.0046f1a0
lea ecx, [esp + 0x38]
mov byte [esp + 0x1498], 0x1a
call fcn.00454280
test ax, ax
jle 0x4b4f4f
lea ecx, [esp + 0x38]
call fcn.00454280
lea ecx, [esp + 0x38]
xor esi, esi
movsx ebx, ax
call fcn.00454280
test ax, ax
jle 0x4b46b8
push esi
lea ecx, [esp + 0x3c]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x38]
inc esi
call fcn.00454280
movsx ecx, ax
cmp esi, ecx
jl 0x4b4696
lea ecx, [esp + 0x300]
call fcn.00496da0
mov edi, eax
shr edi, 3
jne 0x4b46f4
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b4f38
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea edi, [edx + eax + 1]
test edi, edi
jle 0x4b4f38
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov esi, eax
lea ecx, [esi + edi]
cmp ecx, ebx
jle 0x4b4e5f
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x38]
jmp 0x4b4c03
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x50]
push edx
call fcn.0046f1a0
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1498], 0x1b
call fcn.00454280
test ax, ax
jle 0x4b4f60
lea ecx, [esp + 0x3c]
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b4780
push esi
lea ecx, [esp + 0x40]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x3c]
inc esi
call fcn.00454280
movsx eax, ax
cmp esi, eax
jl 0x4b475e
lea ecx, [esp + 0x300]
call fcn.00496da0
mov edi, eax
shr edi, 3
jne 0x4b47bc
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b488f
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea edi, [edx + ecx + 1]
test edi, edi
jle 0x4b488f
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov esi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x4b482e
xor ebx, ebx
test eax, eax
jle 0x4b488f
push 0
push ebx
lea edx, [esp + esi + 0x1c4]
push edi
push edx
mov ecx, ebp
call fcn.004b1730
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4b488f
and eax, 0xffff
lea ecx, [esp + 0x3c]
add esi, eax
call fcn.00454280
movsx eax, ax
cmp esi, eax
jg 0x4b488f
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x4b47e7
jmp 0x4b488f
cmp word [ebp + 0x134], 0
jne 0x4b484e
push 0
push 0
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004b1730
jmp 0x4b488f
lea ecx, [esp + 0x3c]
xor ebx, ebx
call fcn.00454280
movsx edx, ax
cmp esi, edx
jge 0x4b488f
push 0
push ebx
lea eax, [esp + esi + 0x1c4]
push edi
push eax
mov ecx, ebp
call fcn.004b1730
xor ecx, ecx
mov cx, word [ebp + 0x134]
add esi, ecx
lea ecx, [esp + 0x3c]
inc ebx
call fcn.00454280
movsx edx, ax
cmp esi, edx
jl 0x4b4860
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je 0x4b48a6
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x3c]
jmp 0x4b4c03
lea ecx, [esp + 0x300]
call fcn.0049ffa0
lea ecx, [esp + 0x44]
mov dword [esp + 0x14], eax
push ecx
lea ecx, [esp + 0x54]
call fcn.0046f1a0
lea ecx, [esp + 0x44]
mov byte [esp + 0x1498], 0x1c
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b490f
push esi
lea ecx, [esp + 0x48]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x44]
inc esi
call fcn.00454280
movsx edx, ax
cmp esi, edx
jl 0x4b48ed
lea ecx, [esp + 0x300]
call fcn.00496da0
mov esi, eax
shr esi, 3
jne 0x4b494b
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b4a78
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea esi, [edx + eax + 1]
test esi, esi
jle 0x4b4a78
mov ecx, dword [ebp + 0xd4]
call fcn.004b5010
mov ecx, dword [ebp + 0xd4]
call fcn.004b5010
mov bl, al
lea ecx, [esp + 0x44]
and ebx, 0xff
call fcn.00454280
movsx ecx, ax
mov eax, dword [esp + 0x14]
sub ecx, ebx
dec ecx
cmp eax, ecx
jle 0x4b4999
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x44]
jmp 0x4b4c03
xor ebx, ebx
test esi, esi
jle 0x4b4a78
lea edi, [esp + eax + 0x1bc]
mov dl, byte [edi + ebx]
xor cl, cl
mov byte [esp + 0x1b], dl
mov byte [esp + 0x13], cl
mov al, byte [esp + 0x1b]
shr al, cl
test al, 1
je 0x4b4a60
lea ecx, [esp + 0xab]
push ecx
lea ecx, [esp + 0x144]
call fcn.00495010
lea edx, [esp + 0x140]
lea ecx, [esp + 0x300]
push edx
mov byte [esp + 0x149c], 0x1d
call fcn.00496c40
mov al, byte [esp + 0x14]
lea ecx, [esp + 0x2b]
add al, bl
push ecx
lea ecx, [esp + 0x144]
mov byte [esp + 0x2f], al
call fcn.004b65b0
lea edx, [esp + 0x13]
lea ecx, [esp + 0x140]
push edx
call fcn.004b65b0
push 0
push 0
lea ecx, [esp + 0x148]
call fcn.00495090
push eax
push 0
lea ecx, [esp + 0x150]
call fcn.004950a0
push eax
mov ecx, ebp
call fcn.004b1730
lea ecx, [esp + 0x140]
mov byte [esp + 0x1498], 0x1c
call fcn.00473a00
mov cl, byte [esp + 0x13]
inc cl
cmp cl, 8
mov byte [esp + 0x13], cl
jb 0x4b49b7
inc ebx
cmp ebx, esi
jl 0x4b49aa
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x44]
jmp 0x4b4c03
mov eax, dword [ebp + 0x168]
test eax, eax
jne 0x4b4aa7
mov eax, dword [ebp + 0x130]
cmp eax, edi
je 0x4b4d42
mov dword [ebp + 0x168], eax
cmp dword [ebp + 0x164], edi
jne 0x4b4ac1
mov eax, dword [ebp + 0x168]
cmp eax, 1
jle 0x4b4ac1
dec eax
mov dword [ebp + 0x164], eax
lea eax, [esp + 0x48]
lea ecx, [esp + 0x50]
push eax
call fcn.0046f1a0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1498], 0x1e
call fcn.00454280
test ax, ax
jle 0x4b4bf7
lea ecx, [esp + 0x48]
xor esi, esi
call fcn.00454280
test ax, ax
jle 0x4b4b1b
push esi
lea ecx, [esp + 0x4c]
call fcn.004541f0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x48]
inc esi
call fcn.00454280
movsx ecx, ax
cmp esi, ecx
jl 0x4b4af9
lea ecx, [esp + 0x300]
call fcn.00496da0
mov ebx, eax
shr ebx, 3
jne 0x4b4b57
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4b4bf7
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea ebx, [edx + eax + 1]
test ebx, ebx
jle 0x4b4bf7
lea ecx, [esp + 0x300]
call fcn.0049ffa0
mov esi, eax
mov eax, dword [ebp + 0x168]
test eax, eax
jle 0x4b4be0
xor edi, edi
test eax, eax
jle 0x4b4bbe
push 0
push edi
lea ecx, [esp + esi + 0x1c4]
push ebx
push ecx
mov ecx, ebp
call fcn.004b1730
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4b4bb3
and eax, 0xffff
lea ecx, [esp + 0x48]
add esi, eax
call fcn.00454280
movsx edx, ax
cmp esi, edx
jg 0x4b4bbe
mov eax, dword [ebp + 0x168]
inc edi
cmp edi, eax
jl 0x4b4b7d
mov eax, dword [ebp + 0x164]
test eax, eax
jle 0x4b4be0
mov ecx, dword [ebp + 0x168]
sub ecx, 2
cmp eax, ecx
jg 0x4b4bd9
dec dword [esp + 0x78]
dec eax
mov dword [ebp + 0x164], eax
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4b4bf7
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x48]
call fcn.00453ea0
mov esi, dword [esp + 0x78]
mov eax, dword [esp + 0xa0]
inc esi
cmp esi, eax
mov dword [esp + 0x78], esi
jl 0x4b21ea
jmp 0x4b4c90
lea ecx, [esp + 0x2c]
call fcn.00454280
movsx eax, ax
lea ecx, [edi + 1]
cmp ecx, eax
jge 0x4b4c7f
mov cl, byte [esp + edi + 0x1bc]
lea eax, [esp + edi + 0x1bc]
cmp cl, 0x92
jne 0x4b4c53
mov cl, byte [esp + edi + 0x1bd]
test cl, cl
je 0x4b4c61
push 0
push 0
push 2
push eax
mov ecx, ebp
call fcn.004b1730
xor edx, edx
lea ecx, [esp + 0x2c]
mov dx, word [ebp + 0x134]
add edi, edx
call fcn.00454280
movsx eax, ax
lea ecx, [edi + 1]
cmp ecx, eax
jl 0x4b4c35
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x2c]
call fcn.00453ea0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
mov dword [esp + 0x1498], 0xffffffff
lea ecx, [esp + 0x50]
call fcn.0046ed80
mov eax, 1
mov ecx, dword [esp + 0x1490]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x148c
ret 0xc
lea ecx, [esp + 0x2c]
call fcn.00454280
movsx edx, ax
lea eax, [edi + 1]
cmp eax, edx
jge 0x4b4c7f
mov esi, 1
lea ecx, [esp + 0x1bc]
lea edi, [esp + edi + 0x1bc]
sub esi, ecx
cmp byte [edi], 0x92
jne 0x4b4d0c
mov al, byte [edi + 1]
test al, al
je 0x4b4d1a
push 0
push 0
push 2
push edi
mov ecx, ebp
call fcn.004b1730
lea ecx, [esp + 0x2c]
add edi, 2
call fcn.00454280
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jl 0x4b4d00
jmp 0x4b4c7f
mov ecx, dword [esp + 0x14a8]
mov dword [ecx], 1
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], edi
call fcn.0046ed80
xor eax, eax
jmp 0x4b4cbd
mov edx, dword [esp + 0x14a8]
mov eax, dword [esp + 0x90]
push eax
mov dword [edx], 1
call fcn.004db420
add esp, 4
lea ecx, [esp + 0x40]
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
mov byte [esp + 0x1498], 1
call fcn.00453ea0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0046ed80
xor eax, eax
jmp 0x4b4cbd
lea ecx, [esp + 0x34]
mov byte [esp + 0x1498], 1
call fcn.00453ea0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0046ed80
xor eax, eax
jmp 0x4b4cbd
lea ecx, [esp + 0x74]
mov byte [esp + 0x1498], 1
call fcn.00453ea0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0046ed80
xor eax, eax
jmp 0x4b4cbd
lea ecx, [esp + 0x300]
call fcn.004b5000
mov word [ebp + 0x160], ax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x4b4ed1
xor ebx, ebx
test eax, eax
jle 0x4b4f38
push 0
push ebx
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004b1730
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4b4f38
and eax, 0xffff
lea ecx, [esp + 0x38]
add esi, eax
call fcn.00454280
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jg 0x4b4f38
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x4b4e87
jmp 0x4b4f38
cmp word [ebp + 0x134], 0
jne 0x4b4ef1
push 0
push 0
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004b1730
jmp 0x4b4f38
lea ecx, [esp + 0x38]
xor ebx, ebx
call fcn.00454280
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jge 0x4b4f38
push 0
push ebx
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004b1730
xor edx, edx
lea ecx, [esp + 0x38]
mov dx, word [ebp + 0x134]
add esi, edx
inc ebx
call fcn.00454280
movsx eax, ax
lea ecx, [esi + edi]
cmp ecx, eax
jl 0x4b4f06
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4b4f4f
push eax
mov ecx, ebp
call fcn.004b0e10
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x38]
jmp 0x4b4c8b
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1498], 1
call fcn.00453ea0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.00495fe0
mov dword [esp + 0x1498], edi
jmp 0x4b4caf