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

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x52eef5
push eax
mov eax, 0x1480
mov dword fs:[0], esp
call fcn.00515b70
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.004974f0
lea ecx, [esp + 0x300]
mov dword [esp + 0x1498], ebx
call fcn.004cf820
mov edi, dword [esp + 0x14a4]
mov byte [esp + 0x1498], 1
mov eax, dword [edi + 0x14]
cmp eax, 0xffffffff
je 0x4eb35b
mov ecx, dword [ebp + 0xcc]
push ecx
push eax
lea ecx, [esp + 0x308]
call fcn.004cffe0
mov ebx, eax
xor esi, esi
test ebx, ebx
jle 0x4eb359
push esi
lea ecx, [esp + 0x304]
call fcn.004d0120
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 0x4eb3e5
inc esi
cmp esi, ebx
jl 0x4eb31a
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.004cffe0
cmp ax, bx
jg 0x4eb464
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.004975f0
xor eax, eax
jmp 0x4ee00d
push 0
push 1
sub esp, 0x10
mov ecx, 0x55eb50
mov edx, esp
mov dword [esp + 0x100], esp
push 1
push edx
call fcn.004b2c30
sub esp, 0x10
mov ecx, 0x55eb50
mov eax, esp
mov dword [esp + 0xe4], esp
push 1
push eax
mov byte [esp + 0x14c8], 2
call fcn.004b2c30
mov ecx, 0x55b3d0
mov byte [esp + 0x14c0], 1
call fcn.004995c0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.004975f0
xor eax, eax
jmp 0x4ee00d
movsx eax, ax
xor edi, edi
cmp eax, ebx
mov dword [esp + 0xa0], eax
jle 0x4eb52c
push edi
lea ecx, [esp + 0x304]
call fcn.004d0120
lea ecx, [esp + 0x300]
call fcn.004d0710
cmp eax, 8
lea ecx, [esp + 0x300]
jbe 0x4eb4e3
call fcn.004d0710
mov esi, eax
lea ecx, [esp + 0x300]
add word [ebp + 0xfa], si
call fcn.004d0700
lea ecx, [eax + 8]
cmp esi, ebx
mov word [ebp + 0xfc], cx
jle 0x4eb51c
mov dx, word [ebp + 0xf8]
mov eax, 1
shl eax, cl
or dx, ax
dec ecx
dec esi
jne 0x4eb4cc
mov word [ebp + 0xf8], dx
jmp 0x4eb51c
call fcn.004d0710
mov esi, eax
lea ecx, [esp + 0x300]
add word [ebp + 0xfa], si
call fcn.004d0700
cmp esi, ebx
mov word [ebp + 0xfc], ax
mov ecx, eax
jle 0x4eb51c
mov edx, 1
shl edx, cl
or word [ebp + 0xf8], dx
dec ecx
dec esi
jne 0x4eb50a
mov eax, dword [esp + 0xa0]
inc edi
cmp edi, eax
jl 0x4eb478
cmp eax, ebx
mov dword [esp + 0x78], ebx
jle 0x4edfe0
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.00497af0
push esi
lea ecx, [esp + 0x304]
call fcn.004d0120
test esi, esi
jne 0x4eb5af
lea ecx, [esp + 0x300]
call fcn.004d0710
shr eax, 3
jne 0x4eb5a9
mov cx, word [ebp + 0xfa]
test cx, cx
jbe 0x4eb5a9
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 0x4eb5af
mov dword [ebp + 0x138], eax
lea ecx, [esp + 0x300]
call fcn.004d06f0
lea edx, [esp + 0xd4]
lea ebx, [ebp + 0xe4]
push edx
mov ecx, ebx
mov dword [esp + 0xd8], eax
call fcn.004f0ee0
mov ecx, dword [ebx + 4]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x4eb5f6
mov edx, dword [esp + 0xd4]
mov esi, dword [eax + 0xc]
cmp edx, esi
jb 0x4eb5f6
lea eax, [esp + 0x14]
jmp 0x4eb604
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 0x4eb619
xor edi, edi
mov esi, dword [esp + 0x30]
cmp esi, 0x29
jne 0x4eb63a
cmp byte [ebp + 0xe0], 1
jbe 0x4eb63a
cmp dword [ebp + 0x168], 1
je 0x4edfe0
jmp 0x4eb657
test edi, edi
je 0x4eb9cf
cmp esi, 2
je 0x4eb64c
cmp esi, 3
jne 0x4eb657
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.004c15d0
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.004c56e0
cmp eax, 1
jne 0x4eb9ad
lea ecx, [esp + 0x188]
call fcn.0048a5e0
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 3
call fcn.004974f0
push ecx
lea ecx, [esp + 0x54]
mov eax, esp
mov dword [esp + 0x18], esp
push eax
mov byte [esp + 0x14a0], 4
call fcn.00497a20
lea ecx, [esp + 0x18c]
call fcn.0048a8d0
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 0x4eb70c
xor eax, eax
jmp 0x4eb715
mov eax, dword [esp + 0x7c]
sub eax, ecx
sar eax, 4
test eax, eax
jge 0x4eb71b
xor eax, eax
shl eax, 4
push eax
call fcn.00514b36
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.00495e00
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.00415300
mov dl, byte [esp + 0x94]
lea ecx, [esp + 0x1b0]
mov byte [esi + 0x10], dl
mov byte [esp + 0x14bc], 4
call fcn.004976a0
lea ecx, [esp + 0x300]
call fcn.004d06f0
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.0048a5f0
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.00495de0
test eax, eax
jge 0x4eb7df
xor eax, eax
shl eax, 4
push eax
call fcn.00514b36
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.00495e00
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.0048bd10
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.0048a5f0
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.00495de0
test eax, eax
jge 0x4eb8a1
xor eax, eax
shl eax, 4
push eax
call fcn.00514b36
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.00495e00
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.0048bd10
lea eax, [esp + 0x150]
lea ecx, [esp + 0x2f8]
push eax
push ecx
mov ecx, ebx
mov byte [esp + 0x14a0], 0xb
call fcn.004efda0
lea edx, [esp + 0x154]
mov dword [esp + 0x14], edx
lea ecx, [esp + 0x158]
mov byte [esp + 0x1498], 0xc
call fcn.004975f0
lea ecx, [esp + 0x154]
mov byte [esp + 0x1498], 8
call fcn.0048a720
lea eax, [esp + 0x118]
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x11c]
mov byte [esp + 0x1498], 0xd
call fcn.004975f0
lea ecx, [esp + 0x118]
mov byte [esp + 0x1498], 4
call fcn.0048a720
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 0xe
call fcn.004975f0
lea ecx, [esp + 0x188]
mov byte [esp + 0x1498], 1
call fcn.0048a720
jmp 0x4ebacc
or edi, 0xffffffff
cmp eax, edi
je case.0x4ebae7.13
cmp esi, 0x23
je case.0x4ebae7.13
cmp esi, 0x10
jne 0x4ee085
jmp 0x4ebad3
lea ecx, [eax + 0x10]
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4eba0c
mov ecx, dword [esp + 0x84]
push esi
add ecx, 0x10
call fcn.0048a9e0
mov edx, dword [esp + 0x84]
mov byte [esp + esi + 0x1bc], al
inc esi
lea ecx, [edx + 0x10]
call fcn.0048ab50
movsx eax, ax
cmp esi, eax
jl 0x4eb9de
mov ecx, dword [esp + 0x84]
add ecx, 0x10
call fcn.0048ab50
lea ecx, [esp + 0x84]
mov dword [esp + 0x7c], eax
call fcn.004efad0
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 0x4eba4c
xor eax, eax
jmp 0x4eba54
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 4
test eax, eax
jge 0x4eba5a
xor eax, eax
shl eax, 4
push eax
call fcn.00514b36
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 0x4eba95
push ebx
push edi
call fcn.00496060
mov eax, dword [esp + 0x4c]
add ebx, 0x10
add esp, 8
add edi, 0x10
cmp ebx, eax
jne 0x4eba7d
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.00415300
mov dl, byte [esi + 0x10]
lea ecx, [esp + 0x74]
mov byte [edi + 0x10], dl
mov byte [esp + 0x14bc], 1
call fcn.004976a0
mov esi, dword [esp + 0x30]
or edi, 0xffffffff
lea eax, [esi - 1]
cmp eax, 0x29
ja case.0x4ebae7.13
xor ecx, ecx
mov cl, byte [eax + 0x4ee318]
jmp dword [ecx*4 + 0x4ee2e4]
lea edx, [esp + 0x2c]
lea ecx, [esp + 0x50]
push edx
call fcn.00497a20
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1498], 0x10
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4ebb36
push esi
lea ecx, [esp + 0x30]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x2c]
inc esi
call fcn.0048ab50
movsx eax, ax
cmp esi, eax
jl 0x4ebb14
lea ecx, [esp + 0x300]
call fcn.004d0710
mov esi, eax
lea ecx, [esp + 0x300]
shr esi, 3
call fcn.004d0710
test al, 7
jbe 0x4ebb7c
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ebb7c
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 0x4ebcf4
lea ecx, [esp + 0x300]
call fcn.004d9640
mov edi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x4ebc18
xor ebx, ebx
test eax, eax
jle 0x4ebcf4
cmp dword [esp + 0x30], 0x28
jne 0x4ebbca
xor eax, eax
test esi, esi
jle 0x4ebbc6
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx + eax], 0
jne 0x4ebbca
inc eax
cmp eax, esi
jl 0x4ebbbb
add edi, esi
jmp 0x4ebc08
push 0
push ebx
lea edx, [esp + edi + 0x1c4]
push esi
push edx
mov ecx, ebp
call fcn.004eaa80
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4ebcf4
and eax, 0xffff
lea ecx, [esp + 0x2c]
add edi, eax
call fcn.0048ab50
movsx eax, ax
cmp edi, eax
jg 0x4ebcf4
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x4ebba7
jmp 0x4ebcf4
cmp word [ebp + 0x134], 0
jne 0x4ebc6f
mov eax, dword [esp + 0x30]
cmp eax, 0x28
jne 0x4ebc4d
xor eax, eax
test esi, esi
jle 0x4ebde5
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx], 0
jne 0x4ebc56
inc eax
inc ecx
cmp eax, esi
jge 0x4ebde5
jmp 0x4ebc3c
cmp eax, 0x2a
je 0x4ee028
push 0
push 0
lea ecx, [esp + edi + 0x1c4]
push esi
push ecx
mov ecx, ebp
call fcn.004eaa80
jmp 0x4ebcf4
lea ecx, [esp + 0x2c]
xor ebx, ebx
call fcn.0048ab50
movsx edx, ax
xor eax, eax
mov ax, word [ebp + 0x134]
add eax, edi
cmp eax, edx
jg 0x4ebcf4
mov eax, dword [esp + 0x30]
cmp eax, 0x28
jne 0x4ebcb1
xor eax, eax
test esi, esi
jle 0x4ebcad
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx], 0
jne 0x4ebcba
inc eax
inc ecx
cmp eax, esi
jl 0x4ebca2
add edi, esi
jmp 0x4ebcd9
cmp eax, 0x2a
je 0x4edf72
push 0
push ebx
lea ecx, [esp + edi + 0x1c4]
push esi
push ecx
mov ecx, ebp
call fcn.004eaa80
xor edx, edx
mov dx, word [ebp + 0x134]
add edi, edx
inc ebx
lea ecx, [esp + 0x2c]
call fcn.0048ab50
xor ecx, ecx
mov cx, word [ebp + 0x134]
movsx eax, ax
add ecx, edi
cmp ecx, eax
jle 0x4ebc8c
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4ebd0b
push eax
mov ecx, ebp
call fcn.004ea160
cmp dword [esp + 0x30], 0xb
jne 0x4ebde5
lea ecx, [esp + 0x300]
call fcn.004d9640
mov cl, byte [esp + eax + 0x1bc]
test cl, cl
je 0x4ebde5
lea ecx, [esp + 0x300]
call fcn.004d9640
cmp byte [esp + eax + 0x1bb], 0x28
je 0x4ebde5
lea ecx, [esp + 0x300]
call fcn.004d9640
cmp byte [esp + eax + 0x1bb], 8
je 0x4ebde5
lea ecx, [esp + 0x300]
call fcn.004d9640
mov cl, byte [esp + eax + 0x1bb]
test cl, cl
je 0x4ebde5
lea ecx, [esp + 0x50]
call fcn.00497af0
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.004c56e0
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 0x4edf53
call fcn.0048a720
jmp case.0x4ebae7.1
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x2c]
jmp 0x4edf53
mov ecx, dword [ebp + 0xd4]
call fcn.004c07f0
lea ecx, [esp + 0x300]
call fcn.004d0710
shr eax, 3
mov dword [esp + 0x14], eax
jne 0x4ebe3f
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ebe3f
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.00497a10
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4ebec1
mov eax, dword [eax + 8]
sub eax, ecx
sar eax, 2
cmp edi, eax
jae 0x4ebec1
xor esi, esi
lea ecx, [esp + 0x50]
push esi
call fcn.00497a10
mov eax, dword [eax + 4]
lea ecx, [eax + edi*4]
call fcn.0048ab50
test ax, ax
jle 0x4ebebe
push 0
lea ecx, [esp + 0x54]
call fcn.00497a10
mov eax, dword [eax + 4]
push esi
lea ecx, [eax + edi*4]
call fcn.0048a9e0
mov byte [esp + ebx + 0x1bc], al
inc ebx
push 0
lea ecx, [esp + 0x54]
inc esi
call fcn.00497a10
mov eax, dword [eax + 4]
lea ecx, [eax + edi*4]
call fcn.0048ab50
movsx ecx, ax
cmp esi, ecx
jl 0x4ebe81
inc edi
jmp 0x4ebe47
mov edi, dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
test edi, edi
jle 0x4ec103
lea ecx, [esp + 0x300]
call fcn.004d9640
mov esi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
mov dword [esp + 0x20], esi
je 0x4ebfbc
xor ebx, ebx
test eax, eax
jle 0x4ec103
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jge 0x4ec103
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x4ebf30
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 0x4ebf40
cmp dword [esp + 0x30], 3
jne 0x4ebf40
dec eax
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x2bc]
cmp al, 0xff
jne 0x4ebf5b
cmp byte [esp + 0x2bd], 0xff
je 0x4ec103
jmp 0x4ebf6e
test al, al
jne 0x4ebf6e
mov al, byte [esp + 0x2bd]
test al, al
je 0x4ec103
push 0
lea ecx, [esp + 0x54]
call fcn.00497a10
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.004eaa80
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 0x4ebefc
jmp 0x4ec103
push 0
lea ecx, [esp + 0x54]
mov dword [esp + 0x28], 0
call fcn.00497a10
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4ec103
mov edx, dword [eax + 8]
sub edx, ecx
sar edx, 2
je 0x4ec103
add esi, edi
cmp esi, ebx
jg 0x4ec103
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x4ec01a
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 0x4ec02a
cmp dword [esp + 0x30], 3
jne 0x4ec02a
dec ebx
mov al, byte [esp + 0x2d0]
cmp al, 0xff
jne 0x4ec045
cmp byte [esp + 0x2d1], 0xff
je 0x4ec103
jmp 0x4ec058
test al, al
jne 0x4ec058
mov al, byte [esp + 0x2d1]
test al, al
je 0x4ec103
push 0
lea ecx, [esp + 0x54]
call fcn.00497a10
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.004eaa80
cmp word [ebp + 0x134], 0
jne 0x4ec0c5
push 0
lea ecx, [esp + 0x54]
call fcn.00497a10
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4ec0ab
mov eax, dword [eax + 8]
sub eax, ecx
and al, 0xfc
cmp eax, 4
je 0x4ec103
push 0
lea ecx, [esp + 0x54]
call fcn.00497a10
mov ecx, dword [eax + 4]
call fcn.0048ab50
mov word [ebp + 0x134], ax
xor ecx, ecx
push 0
mov cx, word [ebp + 0x134]
add ebx, ecx
lea ecx, [esp + 0x54]
call fcn.00497a10
mov ecx, dword [eax + 4]
call fcn.0048ab50
movsx ecx, ax
mov eax, ebx
cdq
idiv ecx
cmp eax, esi
jle 0x4ec0f4
inc esi
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x1c]
lea edx, [ebx + edi]
cmp edx, eax
jle 0x4ebff6
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je case.0x4ebae7.13
push eax
mov ecx, ebp
call fcn.004ea160
jmp case.0x4ebae7.13
lea ecx, [esp + 0x300]
call fcn.004d9640
lea ecx, [esp + 0x80]
mov edi, eax
push ecx
lea ecx, [esp + 0x54]
mov dword [esp + 0x18], edi
call fcn.00497a20
lea ecx, [esp + 0x80]
mov byte [esp + 0x1498], 0x11
xor ebx, ebx
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4ec18b
push esi
lea ecx, [esp + 0x84]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x80]
inc esi
call fcn.0048ab50
movsx edx, ax
cmp esi, edx
jl 0x4ec163
lea ecx, [esp + 0x300]
call fcn.004d0710
shr eax, 3
mov dword [esp + 0x20], eax
jne 0x4ec1c9
mov ax, word [ebp + 0xfa]
cmp ax, bx
jbe 0x4ec1c9
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 0x4ec42c
dec eax
je 0x4ec2e7
sub eax, 2
jne 0x4ec513
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x4ec513
cmp dword [ebp + 0x130], 0xffffffff
je 0x4ec271
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x4ec513
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 0x4ec255
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.004eaa80
inc ebx
cmp ebx, 8
jl 0x4ec21b
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x4ec20e
jmp 0x4ec513
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x4ec513
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 0x4ec2cb
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.004eaa80
inc ebx
cmp ebx, 8
jl 0x4ec291
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x4ec284
jmp 0x4ec513
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x4ec513
cmp dword [ebp + 0x130], 0xffffffff
je 0x4ec398
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x4ec513
lea esi, [esp + 0x1bc]
jmp 0x4ec319
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 0x4ec333
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4ec372
xor ebx, ebx
mov dl, byte [esp + 0x13]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4ec36a
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.004eaa80
inc ebx
cmp ebx, 8
jl 0x4ec337
jmp 0x4ec382
push 0
push 0
push 0x9901
mov ecx, ebp
call fcn.004ea220
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x4ec315
jmp 0x4ec513
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x4ec513
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 0x4ec3c8
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4ec406
xor ebx, ebx
mov al, byte [esp + 0x1b]
mov cl, bl
shr al, cl
test al, 1
je 0x4ec3fe
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.004eaa80
inc ebx
cmp ebx, 8
jl 0x4ec3cc
jmp 0x4ec416
push 0
push 0
push 0x9901
mov ecx, ebp
call fcn.004ea220
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x4ec3ab
jmp 0x4ec513
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x4ec513
cmp dword [ebp + 0x130], 0xffffffff
je 0x4ec4ad
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x4ec513
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 0x4ec494
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.004eaa80
inc ebx
cmp ebx, 8
jl 0x4ec461
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x4ec454
jmp 0x4ec513
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x4ec513
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 0x4ec4fc
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.004eaa80
inc ebx
cmp ebx, 8
jl 0x4ec4c9
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x4ec4bc
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je 0x4ec52a
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x80]
jmp 0x4edf53
lea ecx, [esp + 0x88]
push ecx
lea ecx, [esp + 0x54]
call fcn.00497a20
lea ecx, [esp + 0x88]
mov byte [esp + 0x1498], 0x12
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4ec592
push esi
lea ecx, [esp + 0x8c]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x88]
inc esi
call fcn.0048ab50
movsx edx, ax
cmp esi, edx
jl 0x4ec56a
lea ecx, [esp + 0x300]
call fcn.004d0710
shr eax, 3
mov dword [esp + 0x14], eax
jne 0x4ec5d4
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ec78c
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 0x4ec78c
lea ecx, [esp + 0x300]
call fcn.004d9640
mov cl, byte [esp + 0x2b]
mov dword [esp + 0x20], eax
mov byte [esp + 0xd8], cl
mov edi, 0x55802c
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.00408220
test al, al
je 0x4ec662
mov edi, dword [esp + 0xdc]
mov ecx, ebx
mov edx, ecx
mov esi, 0x55802c
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 0x4ec745
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 0x4ec72e
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.004d05a0
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.004eaa80
mov eax, dword [esp + 0xf0]
push eax
call fcn.00514120
add esp, 4
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf4], esi
mov dword [esp + 0xf8], esi
inc ebx
cmp ebx, 8
jl 0x4ec68e
mov eax, dword [esp + 0x14]
inc edi
cmp edi, eax
jl 0x4ec67f
mov eax, dword [esp + 0xdc]
xor esi, esi
cmp eax, esi
mov byte [esp + 0x1498], 0x12
je 0x4ec777
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x4ec76e
cmp al, 0xff
je 0x4ec76e
dec al
mov byte [ecx], al
jmp 0x4ec777
push ecx
call fcn.00514120
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 0x4ec7a3
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x88]
jmp 0x4edf53
cmp dword [ebp + 0x130], edi
je 0x4ee092
mov byte [esp + 0xb4], 1
lea edx, [esp + 0x40]
lea ecx, [esp + 0x50]
push edx
call fcn.00497a20
lea ecx, [esp + 0x40]
mov byte [esp + 0x1498], 0x15
call fcn.0048ab50
test ax, ax
jle 0x4ec8c0
lea ecx, [esp + 0x40]
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4ec825
push esi
lea ecx, [esp + 0x44]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x40]
inc esi
call fcn.0048ab50
movsx eax, ax
cmp esi, eax
jl 0x4ec803
lea ecx, [esp + 0x300]
call fcn.004d0710
mov ebx, eax
shr ebx, 3
jne 0x4ec85d
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ec8c0
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 0x4ec8c0
lea ecx, [esp + 0x300]
call fcn.004d9640
mov esi, eax
mov eax, dword [ebp + 0x130]
test eax, eax
jle 0x4ec8c0
xor edi, edi
test eax, eax
jle 0x4ec8c0
push 0
push edi
lea edx, [esp + esi + 0x1c4]
push ebx
push edx
mov ecx, ebp
call fcn.004eaa80
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4ec8c0
and eax, 0xffff
lea ecx, [esp + 0x40]
add esi, eax
call fcn.0048ab50
movsx eax, ax
cmp esi, eax
jg 0x4ec8c0
mov eax, dword [ebp + 0x130]
inc edi
cmp edi, eax
jl 0x4ec87f
mov ecx, dword [esp + 0xb4]
mov eax, dword [ebp + 0x130]
and ecx, 0xff
cmp ecx, eax
jge 0x4eca07
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.004d05a0
mov ecx, dword [esp + 0x90]
cmp ecx, esi
jne 0x4ec928
xor eax, eax
jmp 0x4ec931
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.004d03d0
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.004c56e0
cmp eax, 1
je 0x4ec9cc
cmp eax, 0xffffffff
jne 0x4ee0bd
mov eax, dword [esp + 0x90]
mov byte [esp + 0x1498], 0x15
push eax
call fcn.00514120
add esp, 4
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
jmp 0x4ec8c0
mov ecx, dword [esp + 0x90]
push ecx
call fcn.00514120
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.0048a720
jmp 0x4ec7cb
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4eca1e
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x40]
jmp 0x4edf53
lea eax, [esp + 0x34]
lea ecx, [esp + 0x50]
push eax
call fcn.00497a20
xor ebx, ebx
lea ecx, [esp + 0x34]
mov byte [esp + 0x1498], 0x17
mov dword [esp + 0x24], ebx
call fcn.0048ab50
test ax, ax
jle 0x4eca7f
push ebx
lea ecx, [esp + 0x38]
call fcn.0048a9e0
mov byte [esp + ebx + 0x1bc], al
lea ecx, [esp + 0x34]
inc ebx
call fcn.0048ab50
movsx ecx, ax
cmp ebx, ecx
jl 0x4eca59
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x300]
call fcn.004d0710
mov edi, eax
shr edi, 3
mov dword [esp + 0x14], edi
jne 0x4ecac3
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ed51b
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 0x4ed51b
lea ecx, [esp + 0x300]
call fcn.004d9640
mov ecx, eax
mov eax, esi
sub eax, 0x14
mov dword [esp + 0x1c], ecx
je 0x4ed1d3
dec eax
je 0x4ece70
dec eax
jne 0x4ed51b
mov eax, dword [0x560308]
test eax, eax
jne 0x4eccad
mov dl, 0x10
cmp ecx, ebx
mov dword [0x560308], 1
mov byte [esp + 0x13], dl
jge 0x4ed51b
jmp 0x4ecb21
mov edi, dword [esp + 0x14]
cmp edi, 2
jne 0x4ecb3f
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4ecb51
cmp edi, 1
jne 0x4ee12f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
jne 0x4ecb82
mov eax, dword [ebp + 0x38]
test eax, eax
je 0x4ed51b
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 0x4ed51b
jmp 0x4ecc83
movzx si, dl
sub dl, 0x10
push 0
and edx, 0xff
mov ecx, ebp
push edx
push esi
call fcn.004ea220
and esi, 0xffff
lea ecx, [esp + 0xac]
push esi
push 0x549394
push ecx
call fcn.00514b75
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4ecbc1
xor edx, edx
jmp 0x4ecbd7
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 0x4ecc05
call fcn.00514140
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4ecc2a
mov al, byte [ecx - 1]
test al, al
je 0x4ecc2a
cmp al, 0xff
je 0x4ecc2a
test ebx, ebx
jne 0x4ecc4e
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.00405cc0
jmp 0x4ecc7f
test ebx, ebx
jne 0x4ecc39
push 1
mov ecx, esi
call fcn.00405cc0
jmp 0x4ecc7f
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4ecc45
cmp eax, ebx
jae 0x4ecc56
push 1
mov ecx, esi
call fcn.00405cc0
push ebx
mov ecx, esi
call fcn.00405fa0
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 0x4ecb1d
jmp 0x4ed51b
cmp eax, 1
jne 0x4ed51b
mov eax, dword [ebp + 0x38]
test eax, eax
je 0x4ed51b
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 0x4ed51b
xor dl, dl
mov dword [0x560308], 0
mov byte [esp + 0x9c], dl
jmp 0x4eccfa
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4ed51b
cmp edi, 2
jne 0x4ecd20
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4ecd32
cmp edi, 1
jne 0x4ee12f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x4ece43
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.004ea220
and esi, 0xffff
lea edx, [esp + 0x10c]
push esi
push 0x549394
push edx
call fcn.00514b75
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4ecd81
xor edx, edx
jmp 0x4ecd97
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 0x4ecdc5
call fcn.00514140
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4ecdea
mov al, byte [ecx - 1]
test al, al
je 0x4ecdea
cmp al, 0xff
je 0x4ecdea
test ebx, ebx
jne 0x4ece0e
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.00405cc0
jmp 0x4ece3f
test ebx, ebx
jne 0x4ecdf9
push 1
mov ecx, esi
call fcn.00405cc0
jmp 0x4ece3f
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4ece05
cmp eax, ebx
jae 0x4ece16
push 1
mov ecx, esi
call fcn.00405cc0
push ebx
mov ecx, esi
call fcn.00405fa0
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 0x4eccf2
jmp 0x4ed51b
mov eax, dword [0x560308]
test eax, eax
jne 0x4ed036
xor dl, dl
mov dword [0x560308], 1
mov byte [esp + 0x13], dl
mov byte [esp + 0xb0], dl
jmp 0x4ecea2
mov ebx, dword [esp + 0x24]
mov dl, byte [esp + 0x13]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4ed51b
cmp edi, 2
jne 0x4ecec8
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4eceda
cmp edi, 1
jne 0x4ee12f
movzx ax, byte [esp + ecx + 0x1bc]
cmp ax, 1
jbe 0x4ecff7
test dl, dl
jne 0x4ecef2
cmp ax, 0x10
sbb esi, esi
neg esi
jmp 0x4ecef6
movzx si, dl
mov ecx, dword [esp + 0xb0]
push 0
and ecx, 0xff
push ecx
push esi
mov ecx, ebp
call fcn.004ea220
and esi, 0xffff
lea edx, [esp + 0xd0]
push esi
push 0x549394
push edx
call fcn.00514b75
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4ecf35
xor edx, edx
jmp 0x4ecf4b
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 0x4ecf79
call fcn.00514140
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4ecf9e
mov al, byte [ecx - 1]
test al, al
je 0x4ecf9e
cmp al, 0xff
je 0x4ecf9e
test ebx, ebx
jne 0x4ecfc2
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.00405cc0
jmp 0x4ecff3
test ebx, ebx
jne 0x4ecfad
push 1
mov ecx, esi
call fcn.00405cc0
jmp 0x4ecff3
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4ecfb9
cmp eax, ebx
jae 0x4ecfca
push 1
mov ecx, esi
call fcn.00405cc0
push ebx
mov ecx, esi
call fcn.00405fa0
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 0x4ed006
mov byte [esp + 0x13], 2
jmp 0x4ed00a
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 0x4ece96
jmp 0x4ed51b
cmp eax, 1
jne 0x4ed51b
xor dl, dl
mov dword [0x560308], 0
mov byte [esp + 0xc0], dl
jmp 0x4ed05c
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4ed51b
cmp edi, 2
jne 0x4ed082
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4ed094
cmp edi, 1
jne 0x4ee12f
movzx ax, byte [esp + ecx + 0x1bc]
cmp ax, 1
jbe 0x4ed1a6
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.004ea220
and esi, 0xffff
lea edx, [esp + 0x104]
push esi
push 0x549394
push edx
call fcn.00514b75
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4ed0e4
xor edx, edx
jmp 0x4ed0fa
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 0x4ed128
call fcn.00514140
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4ed14d
mov al, byte [ecx - 1]
test al, al
je 0x4ed14d
cmp al, 0xff
je 0x4ed14d
test ebx, ebx
jne 0x4ed171
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.00405cc0
jmp 0x4ed1a2
test ebx, ebx
jne 0x4ed15c
push 1
mov ecx, esi
call fcn.00405cc0
jmp 0x4ed1a2
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4ed168
cmp eax, ebx
jae 0x4ed179
push 1
mov ecx, esi
call fcn.00405cc0
push ebx
mov ecx, esi
call fcn.00405fa0
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 0x4ed054
jmp 0x4ed51b
mov eax, dword [0x560308]
test eax, eax
jne 0x4ed384
mov dl, 1
mov dword [0x560308], 1
mov byte [esp + 0x13], dl
mov byte [esp + 0xb8], al
jmp 0x4ed201
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4ed51b
cmp edi, 2
jne 0x4ed227
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4ed239
cmp edi, 1
jne 0x4ee12f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x4ed34e
cmp dl, 9
movzx si, dl
jne 0x4ed24d
xor esi, esi
mov ecx, dword [esp + 0xb8]
push 0
and ecx, 0xff
push ecx
push esi
mov ecx, ebp
call fcn.004ea220
and esi, 0xffff
lea edx, [esp + 0xcc]
push esi
push 0x549394
push edx
call fcn.00514b75
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4ed28c
xor edx, edx
jmp 0x4ed2a2
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 0x4ed2d0
call fcn.00514140
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4ed2f5
mov al, byte [ecx - 1]
test al, al
je 0x4ed2f5
cmp al, 0xff
je 0x4ed2f5
test ebx, ebx
jne 0x4ed319
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.00405cc0
jmp 0x4ed34a
test ebx, ebx
jne 0x4ed304
push 1
mov ecx, esi
call fcn.00405cc0
jmp 0x4ed34a
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4ed310
cmp eax, ebx
jae 0x4ed321
push 1
mov ecx, esi
call fcn.00405cc0
push ebx
mov ecx, esi
call fcn.00405fa0
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 0x4ed1f9
jmp 0x4ed51b
cmp eax, 1
jne 0x4ed51b
xor dl, dl
mov dword [0x560308], 0
mov byte [esp + 0xa4], dl
jmp 0x4ed3aa
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x4ed51b
cmp edi, 2
jne 0x4ed3d0
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x4ed3e2
cmp edi, 1
jne 0x4ee12f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x4ed4f3
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.004ea220
and esi, 0xffff
lea edx, [esp + 0xfc]
push esi
push 0x549394
push edx
call fcn.00514b75
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4ed431
xor edx, edx
jmp 0x4ed447
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 0x4ed475
call fcn.00514140
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x4ed49a
mov al, byte [ecx - 1]
test al, al
je 0x4ed49a
cmp al, 0xff
je 0x4ed49a
test esi, esi
jne 0x4ed4be
dec al
push esi
mov byte [ecx - 1], al
mov ecx, ebx
call fcn.00405cc0
jmp 0x4ed4ef
test esi, esi
jne 0x4ed4a9
push 1
mov ecx, ebx
call fcn.00405cc0
jmp 0x4ed4ef
mov eax, dword [ebx + 0xc]
cmp eax, 0x1f
ja 0x4ed4b5
cmp eax, esi
jae 0x4ed4c6
push 1
mov ecx, ebx
call fcn.00405cc0
push esi
mov ecx, ebx
call fcn.00405fa0
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 0x4ed3a2
mov ecx, dword [esp + 0x14a4]
mov eax, dword [ecx + 0x20]
cmp eax, 0xffffffff
je 0x4ed532
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x34]
jmp 0x4edf53
lea edx, [esp + 0x74]
lea ecx, [esp + 0x50]
push edx
call fcn.00497a20
xor ebx, ebx
lea ecx, [esp + 0x74]
mov byte [esp + 0x1498], 0x18
mov dword [esp + 0x24], ebx
call fcn.0048ab50
test ax, ax
jle 0x4ed593
push ebx
lea ecx, [esp + 0x78]
call fcn.0048a9e0
mov byte [esp + ebx + 0x1bc], al
lea ecx, [esp + 0x74]
inc ebx
call fcn.0048ab50
movsx eax, ax
cmp ebx, eax
jl 0x4ed56d
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x300]
call fcn.004d0710
shr eax, 3
jne 0x4ed5cd
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ee16f
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 0x4ee16f
lea ecx, [esp + 0x300]
call fcn.004d9640
mov edi, eax
mov dword [esp + 0x20], 0
cmp edi, ebx
mov dword [esp + 0x14], edi
jge 0x4ed7c4
mov al, byte [esp + edi + 0x1bc]
lea esi, [esp + edi + 0x1bc]
cmp al, 0x40
jbe 0x4ed72b
cmp al, 0xa0
je 0x4ed62c
and eax, 0xff
sub eax, 0x40
and eax, 0x8000001f
jns 0x4ed626
dec eax
or eax, 0xffffffe0
inc eax
je 0x4ed72b
mov edx, dword [esp + 0x20]
push 0
push edx
push 1
push esi
mov ecx, ebp
call fcn.004eaa80
xor eax, eax
lea ecx, [esp + 0xc4]
mov al, byte [esi]
push eax
push 0x549394
push ecx
call fcn.00514b75
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x4ed662
xor edx, edx
jmp 0x4ed678
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 0x4ed6a6
call fcn.00514140
mov edx, dword [esi + 4]
xor ecx, ecx
cmp edx, ecx
je 0x4ed6ce
mov al, byte [edx - 1]
test al, al
je 0x4ed6ce
cmp al, 0xff
je 0x4ed6ce
cmp ebx, ecx
jne 0x4ed6f2
dec al
mov byte [edx - 1], al
mov dword [esi + 4], ecx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ecx
jmp 0x4ed723
cmp ebx, ecx
jne 0x4ed6dd
push 1
mov ecx, esi
call fcn.00405cc0
jmp 0x4ed723
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x4ed6e9
cmp eax, ebx
jae 0x4ed6fa
push 1
mov ecx, esi
call fcn.00405cc0
push ebx
mov ecx, esi
call fcn.00405fa0
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 0x4ed7a4
cmp al, 0xa0
je 0x4ed757
and eax, 0xff
sub eax, 0x40
and eax, 0x8000001f
jns 0x4ed755
dec eax
or eax, 0xffffffe0
inc eax
je 0x4ed7a4
mov eax, dword [esp + 0x20]
push 0
push eax
push 1
push esi
mov ecx, ebp
call fcn.004eaa80
xor ecx, ecx
lea edx, [esp + 0xc4]
mov cl, byte [esi]
push ecx
push 0x549394
push edx
call fcn.00514b75
add esp, 0xc
lea esi, [ebp + 0x34]
lea eax, [esp + 0xc4]
mov ecx, esi
push eax
call fcn.004efa80
dec eax
mov ecx, esi
push eax
call fcn.004efab0
mov ecx, eax
call fcn.00415240
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 0x4ed5f8
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x74]
jmp 0x4edf53
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x50]
push edx
call fcn.00497a20
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1498], 0x19
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4ed81d
push esi
lea ecx, [esp + 0x50]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x4c]
inc esi
call fcn.0048ab50
movsx eax, ax
cmp esi, eax
jl 0x4ed7fb
lea ecx, [esp + 0x300]
call fcn.004d0710
mov ebx, eax
shr ebx, 3
mov dword [esp + 0x14], ebx
jne 0x4ed863
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ed970
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 0x4ed970
lea ecx, [esp + 0x300]
call fcn.004d9640
cmp word [ebp + 0x134], 0
mov esi, eax
jne 0x4ed8e0
test ebx, ebx
jle 0x4ed970
mov edi, ebx
mov al, byte [esp + esi + 0x1bc]
test al, al
je 0x4ed8d7
xor ebx, ebx
mov al, byte [esp + esi + 0x1bc]
mov cl, bl
shr al, cl
test al, 1
je 0x4ed8d1
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, 0x1f
jne 0x4ed8b9
lea eax, [ebx + esi*8]
jmp 0x4ed8c5
cmp ecx, 0x1e
jne 0x4ed8c5
mov eax, esi
shl eax, 8
add eax, ebx
push 0
push 0
push eax
mov ecx, ebp
call fcn.004ea220
inc ebx
cmp ebx, 8
jl 0x4ed89a
inc esi
dec edi
jne 0x4ed88d
jmp 0x4ed970
lea ecx, [esp + 0x4c]
xor edi, edi
call fcn.0048ab50
movsx ecx, ax
cmp esi, ecx
jge 0x4ed970
test ebx, ebx
jle 0x4ed954
mov dword [esp + 0x20], ebx
mov al, byte [esp + esi + 0x1bc]
test al, al
je 0x4ed948
xor ebx, ebx
mov dl, byte [esp + esi + 0x1bc]
mov cl, bl
shr dl, cl
test dl, 1
je 0x4ed93e
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, 0x1f
jne 0x4ed927
lea eax, [ebx + esi*8]
jmp 0x4ed933
cmp ecx, 0x1e
jne 0x4ed933
mov eax, esi
shl eax, 8
add eax, ebx
push 0
push edi
push eax
mov ecx, ebp
call fcn.004ea220
inc ebx
cmp ebx, 8
jl 0x4ed907
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
inc esi
dec eax
mov dword [esp + 0x20], eax
jne 0x4ed8fa
xor eax, eax
lea ecx, [esp + 0x4c]
mov ax, word [ebp + 0x134]
add esi, eax
inc edi
call fcn.0048ab50
movsx ecx, ax
cmp esi, ecx
jl 0x4ed8f2
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4ed987
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x4c]
jmp 0x4edf53
lea eax, [esp + 0x38]
lea ecx, [esp + 0x50]
push eax
mov dword [ebp + 0x15c], 1
call fcn.00497a20
lea ecx, [esp + 0x38]
mov byte [esp + 0x1498], 0x1a
call fcn.0048ab50
test ax, ax
jle 0x4ee29f
lea ecx, [esp + 0x38]
call fcn.0048ab50
lea ecx, [esp + 0x38]
xor esi, esi
movsx ebx, ax
call fcn.0048ab50
test ax, ax
jle 0x4eda08
push esi
lea ecx, [esp + 0x3c]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x38]
inc esi
call fcn.0048ab50
movsx ecx, ax
cmp esi, ecx
jl 0x4ed9e6
lea ecx, [esp + 0x300]
call fcn.004d0710
mov edi, eax
shr edi, 3
jne 0x4eda44
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4ee288
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 0x4ee288
lea ecx, [esp + 0x300]
call fcn.004d9640
mov esi, eax
lea ecx, [esi + edi]
cmp ecx, ebx
jle 0x4ee1af
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x38]
jmp 0x4edf53
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x50]
push edx
call fcn.00497a20
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1498], 0x1b
call fcn.0048ab50
test ax, ax
jle 0x4ee2b0
lea ecx, [esp + 0x3c]
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4edad0
push esi
lea ecx, [esp + 0x40]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x3c]
inc esi
call fcn.0048ab50
movsx eax, ax
cmp esi, eax
jl 0x4edaae
lea ecx, [esp + 0x300]
call fcn.004d0710
mov edi, eax
shr edi, 3
jne 0x4edb0c
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4edbdf
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 0x4edbdf
lea ecx, [esp + 0x300]
call fcn.004d9640
mov esi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x4edb7e
xor ebx, ebx
test eax, eax
jle 0x4edbdf
push 0
push ebx
lea edx, [esp + esi + 0x1c4]
push edi
push edx
mov ecx, ebp
call fcn.004eaa80
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4edbdf
and eax, 0xffff
lea ecx, [esp + 0x3c]
add esi, eax
call fcn.0048ab50
movsx eax, ax
cmp esi, eax
jg 0x4edbdf
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x4edb37
jmp 0x4edbdf
cmp word [ebp + 0x134], 0
jne 0x4edb9e
push 0
push 0
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004eaa80
jmp 0x4edbdf
lea ecx, [esp + 0x3c]
xor ebx, ebx
call fcn.0048ab50
movsx edx, ax
cmp esi, edx
jge 0x4edbdf
push 0
push ebx
lea eax, [esp + esi + 0x1c4]
push edi
push eax
mov ecx, ebp
call fcn.004eaa80
xor ecx, ecx
mov cx, word [ebp + 0x134]
add esi, ecx
lea ecx, [esp + 0x3c]
inc ebx
call fcn.0048ab50
movsx edx, ax
cmp esi, edx
jl 0x4edbb0
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je 0x4edbf6
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x3c]
jmp 0x4edf53
lea ecx, [esp + 0x300]
call fcn.004d9640
lea ecx, [esp + 0x44]
mov dword [esp + 0x14], eax
push ecx
lea ecx, [esp + 0x54]
call fcn.00497a20
lea ecx, [esp + 0x44]
mov byte [esp + 0x1498], 0x1c
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4edc5f
push esi
lea ecx, [esp + 0x48]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x44]
inc esi
call fcn.0048ab50
movsx edx, ax
cmp esi, edx
jl 0x4edc3d
lea ecx, [esp + 0x300]
call fcn.004d0710
mov esi, eax
shr esi, 3
jne 0x4edc9b
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4eddc8
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 0x4eddc8
mov ecx, dword [ebp + 0xd4]
call fcn.004ee360
mov ecx, dword [ebp + 0xd4]
call fcn.004ee360
mov bl, al
lea ecx, [esp + 0x44]
and ebx, 0xff
call fcn.0048ab50
movsx ecx, ax
mov eax, dword [esp + 0x14]
sub ecx, ebx
dec ecx
cmp eax, ecx
jle 0x4edce9
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x44]
jmp 0x4edf53
xor ebx, ebx
test esi, esi
jle 0x4eddc8
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 0x4eddb0
lea ecx, [esp + 0xab]
push ecx
lea ecx, [esp + 0x144]
call fcn.004a40f0
lea edx, [esp + 0x140]
lea ecx, [esp + 0x300]
push edx
mov byte [esp + 0x149c], 0x1d
call fcn.004d05a0
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.004ef900
lea edx, [esp + 0x13]
lea ecx, [esp + 0x140]
push edx
call fcn.004ef900
push 0
push 0
lea ecx, [esp + 0x148]
call fcn.004cd250
push eax
push 0
lea ecx, [esp + 0x150]
call fcn.004cd260
push eax
mov ecx, ebp
call fcn.004eaa80
lea ecx, [esp + 0x140]
mov byte [esp + 0x1498], 0x1c
call fcn.004ad390
mov cl, byte [esp + 0x13]
inc cl
cmp cl, 8
mov byte [esp + 0x13], cl
jb 0x4edd07
inc ebx
cmp ebx, esi
jl 0x4edcfa
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x44]
jmp 0x4edf53
mov eax, dword [ebp + 0x168]
test eax, eax
jne 0x4eddf7
mov eax, dword [ebp + 0x130]
cmp eax, edi
je 0x4ee092
mov dword [ebp + 0x168], eax
cmp dword [ebp + 0x164], edi
jne 0x4ede11
mov eax, dword [ebp + 0x168]
cmp eax, 1
jle 0x4ede11
dec eax
mov dword [ebp + 0x164], eax
lea eax, [esp + 0x48]
lea ecx, [esp + 0x50]
push eax
call fcn.00497a20
lea ecx, [esp + 0x48]
mov byte [esp + 0x1498], 0x1e
call fcn.0048ab50
test ax, ax
jle 0x4edf47
lea ecx, [esp + 0x48]
xor esi, esi
call fcn.0048ab50
test ax, ax
jle 0x4ede6b
push esi
lea ecx, [esp + 0x4c]
call fcn.0048a9e0
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x48]
inc esi
call fcn.0048ab50
movsx ecx, ax
cmp esi, ecx
jl 0x4ede49
lea ecx, [esp + 0x300]
call fcn.004d0710
mov ebx, eax
shr ebx, 3
jne 0x4edea7
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x4edf47
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 0x4edf47
lea ecx, [esp + 0x300]
call fcn.004d9640
mov esi, eax
mov eax, dword [ebp + 0x168]
test eax, eax
jle 0x4edf30
xor edi, edi
test eax, eax
jle 0x4edf0e
push 0
push edi
lea ecx, [esp + esi + 0x1c4]
push ebx
push ecx
mov ecx, ebp
call fcn.004eaa80
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4edf03
and eax, 0xffff
lea ecx, [esp + 0x48]
add esi, eax
call fcn.0048ab50
movsx edx, ax
cmp esi, edx
jg 0x4edf0e
mov eax, dword [ebp + 0x168]
inc edi
cmp edi, eax
jl 0x4edecd
mov eax, dword [ebp + 0x164]
test eax, eax
jle 0x4edf30
mov ecx, dword [ebp + 0x168]
sub ecx, 2
cmp eax, ecx
jg 0x4edf29
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 0x4edf47
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x48]
call fcn.0048a720
mov esi, dword [esp + 0x78]
mov eax, dword [esp + 0xa0]
inc esi
cmp esi, eax
mov dword [esp + 0x78], esi
jl 0x4eb53a
jmp 0x4edfe0
lea ecx, [esp + 0x2c]
call fcn.0048ab50
movsx eax, ax
lea ecx, [edi + 1]
cmp ecx, eax
jge 0x4edfcf
mov cl, byte [esp + edi + 0x1bc]
lea eax, [esp + edi + 0x1bc]
cmp cl, 0x92
jne 0x4edfa3
mov cl, byte [esp + edi + 0x1bd]
test cl, cl
je 0x4edfb1
push 0
push 0
push 2
push eax
mov ecx, ebp
call fcn.004eaa80
xor edx, edx
lea ecx, [esp + 0x2c]
mov dx, word [ebp + 0x134]
add edi, edx
call fcn.0048ab50
movsx eax, ax
lea ecx, [edi + 1]
cmp ecx, eax
jl 0x4edf85
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x2c]
call fcn.0048a720
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
mov dword [esp + 0x1498], 0xffffffff
lea ecx, [esp + 0x50]
call fcn.004975f0
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.0048ab50
movsx edx, ax
lea eax, [edi + 1]
cmp eax, edx
jge 0x4edfcf
mov esi, 1
lea ecx, [esp + 0x1bc]
lea edi, [esp + edi + 0x1bc]
sub esi, ecx
cmp byte [edi], 0x92
jne 0x4ee05c
mov al, byte [edi + 1]
test al, al
je 0x4ee06a
push 0
push 0
push 2
push edi
mov ecx, ebp
call fcn.004eaa80
lea ecx, [esp + 0x2c]
add edi, 2
call fcn.0048ab50
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jl 0x4ee050
jmp 0x4edfcf
mov ecx, dword [esp + 0x14a8]
mov dword [ecx], 1
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], edi
call fcn.004975f0
xor eax, eax
jmp 0x4ee00d
mov edx, dword [esp + 0x14a8]
mov eax, dword [esp + 0x90]
push eax
mov dword [edx], 1
call fcn.00514120
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.0048a720
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.004975f0
xor eax, eax
jmp 0x4ee00d
lea ecx, [esp + 0x34]
mov byte [esp + 0x1498], 1
call fcn.0048a720
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.004975f0
xor eax, eax
jmp 0x4ee00d
lea ecx, [esp + 0x74]
mov byte [esp + 0x1498], 1
call fcn.0048a720
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.004975f0
xor eax, eax
jmp 0x4ee00d
lea ecx, [esp + 0x300]
call fcn.004ee350
mov word [ebp + 0x160], ax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x4ee221
xor ebx, ebx
test eax, eax
jle 0x4ee288
push 0
push ebx
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004eaa80
mov ax, word [ebp + 0x134]
test ax, ax
je 0x4ee288
and eax, 0xffff
lea ecx, [esp + 0x38]
add esi, eax
call fcn.0048ab50
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jg 0x4ee288
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x4ee1d7
jmp 0x4ee288
cmp word [ebp + 0x134], 0
jne 0x4ee241
push 0
push 0
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004eaa80
jmp 0x4ee288
lea ecx, [esp + 0x38]
xor ebx, ebx
call fcn.0048ab50
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jge 0x4ee288
push 0
push ebx
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.004eaa80
xor edx, edx
lea ecx, [esp + 0x38]
mov dx, word [ebp + 0x134]
add esi, edx
inc ebx
call fcn.0048ab50
movsx eax, ax
lea ecx, [esi + edi]
cmp ecx, eax
jl 0x4ee256
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x4ee29f
push eax
mov ecx, ebp
call fcn.004ea160
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x38]
jmp 0x4edfdb
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1498], 1
call fcn.0048a720
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.004cf930
mov dword [esp + 0x1498], edi
jmp 0x4edfff