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

Disassembly:
sub esp, 0x48
push ebx
push ebp
mov ebp, dword [esp + 0x54]
mov ecx, 0xb
push esi
imul esi, dword [esp + 0x6c], 0x2c
add esi, ebp
mov dword [esp + 0x38], 8
mov eax, dword [ebp + 0xa94]
lea ebx, [ecx - 1]
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 0xa98]
mov edx, dword [esi + 0x10e08]
mov dword [esp + 0x48], eax
mov al, byte [esi + 0x10df8]
mov byte [esp + 0xf], al
mov dword [esp + 0x20], 7
push edi
test al, al
je 0x4f0183
dec edx
cmp byte [esi + 0x10df9], 0
je 0x4f015b
imul eax, dword [esi + 0x10dfc], 0x2c
cmp dword [esi + 0x10e00], 4
mov eax, dword [eax + ebp + 0x10df4]
jae 0x4f014f
cmp eax, 7
mov eax, ecx
cmovl eax, dword [esp + 0x3c]
jmp 0x4f0165
cmp eax, 7
mov eax, ebx
cmovl eax, dword [esp + 0x24]
jmp 0x4f0165
imul eax, edx, 0x2c
mov eax, dword [eax + ebp + 0x10df4]
cmp eax, 3
jg 0x4f0174
mov dword [esp + 0x14], 0
jmp 0x4f0191
cmp eax, 9
jg 0x4f017e
sub eax, 3
jmp 0x4f018d
sub eax, 6
jmp 0x4f018d
imul eax, edx, 0x2c
mov eax, dword [eax + ebp + 0x10df4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x70]
dec eax
cmp edx, eax
jne 0x4f01ee
cmp dword [esi + 0x10e0c], 0
jne 0x4f01bd
xor eax, eax
cmp dword [esp + 0x14], 7
setge al
lea edi, [eax*2 + 9]
mov dword [esp + 0x14], edi
jmp 0x4f02e3
mov edi, dword [esp + 0x14]
cmp edi, 3
jg 0x4f01d1
xor edi, edi
mov dword [esp + 0x14], edi
jmp 0x4f02e3
cmp edi, 9
jg 0x4f01e2
sub edi, 3
mov dword [esp + 0x14], edi
jmp 0x4f02e3
sub edi, 6
mov dword [esp + 0x14], edi
jmp 0x4f02e3
cmp byte [esp + 0x13], 0
je 0x4f0226
cmp byte [esi + 0x10df9], 0
je 0x4f0226
cmp dword [esp + 0x14], 7
mov eax, 8
mov edi, dword [esi + 0x10e00]
mov edx, dword [esi + 0x10dfc]
cmovl ecx, eax
mov dword [esp + 0x14], ecx
cmp edi, 4
jae 0x4f02b5
jmp 0x4f0242
mov edi, dword [esi + 0x10e0c]
cmp edi, 4
jae 0x4f02a7
cmp dword [esp + 0x14], 7
mov eax, 8
cmovl ecx, eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x60]
imul ebx, edx, 0xb
lea eax, [ebx + edi]
mov eax, dword [ebp + eax*4 + 0x10e10]
mov dword [ecx], eax
mov ecx, 1
cmp edi, ecx
jb 0x4f0287
imul edx, edx, 0x2c
add ebp, 0x10e10
add edx, ebp
mov ebp, dword [esp + 0x60]
nop dword [eax]
mov eax, dword [edx]
lea edx, [edx + 4]
mov dword [ebp + ecx*4], eax
inc ecx
cmp ecx, edi
jbe 0x4f0270
mov ebp, dword [esp + 0x5c]
cmp ecx, 4
jae 0x4f02df
lea eax, [ebx + ecx]
mov ebx, dword [esp + 0x60]
lea edx, [eax*4 + 0x10e10]
add edx, ebp
mov eax, dword [edx]
lea edx, [edx + 4]
mov dword [ebx + ecx*4], eax
inc ecx
cmp ecx, 4
jb 0x4f0297
jmp 0x4f02df
cmp dword [esp + 0x14], 7
cmovl ebx, dword [esp + 0x24]
mov dword [esp + 0x14], ebx
imul ecx, edx, 0x2c
lea eax, [edi - 4]
mov edi, dword [esp + 0x60]
mov dword [edi], eax
mov eax, dword [ecx + ebp + 0x10e10]
mov dword [edi + 4], eax
mov eax, dword [ecx + ebp + 0x10e14]
mov dword [edi + 8], eax
mov eax, dword [ecx + ebp + 0x10e18]
mov dword [edi + 0xc], eax
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x60]
mov dword [esi + 0x10df4], edi
mov ebx, dword [esp + 0x64]
mov eax, dword [edx]
mov dword [esi + 0x10e10], eax
mov eax, dword [edx + 4]
mov dword [esi + 0x10e14], eax
mov eax, dword [edx + 8]
mov dword [esi + 0x10e18], eax
mov eax, dword [edx + 0xc]
mov dword [esi + 0x10e1c], eax
mov eax, dword [esp + 0x70]
mov cl, byte [ebx]
add eax, 0x623
imul eax, eax, 0x2c
mov byte [esp + 0x12], cl
mov eax, dword [eax + ebp]
mov dword [esp + 0x20], eax
mov eax, ebx
sub eax, dword [edx]
dec ebx
mov dword [esp + 0x3c], ebx
mov ebx, edi
shl ebx, 4
mov dl, byte [eax - 1]
mov eax, dword [ebp + 0xaa0]
and eax, dword [esp + 0x6c]
mov dword [esp + 0x38], eax
add eax, ebx
mov dword [esp + 0x24], eax
cmp edi, 7
movzx eax, cl
push eax
movzx eax, dl
push eax
setge al
mov byte [esp + 0x1b], dl
movzx eax, al
push eax
mov eax, dword [esp + 0x48]
movzx eax, byte [eax]
push eax
push dword [esp + 0x7c]
push ebp
call fcn.004ef840
mov ecx, eax
add esp, 0x18
mov eax, dword [esp + 0x24]
add ecx, dword [esp + 0x20]
movzx eax, word [ebp + eax*2 + 0x6aac]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add eax, ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x1c], eax
xor al, al
mov byte [esp + 0x11], al
lea eax, [ecx + 0x624]
imul edx, eax, 0x2c
mov eax, dword [esp + 0x1c]
add edx, ebp
cmp eax, dword [edx]
jae 0x4f03da
mov dword [edx], eax
mov dword [esi + 0x10e34], ecx
mov dword [esi + 0x10e38], 0xffffffff
mov byte [esi + 0x10e24], 0
mov byte [esp + 0x11], 1
mov eax, dword [esp + 0x24]
movzx eax, word [ebp + eax*2 + 0x6aac]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x511490]
lea eax, [edi*2 + 0x6c2c]
add ecx, dword [esp + 0x20]
add eax, ebp
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
movzx eax, word [eax]
xor eax, 0x7f0
shr eax, 4
movzx eax, byte [eax + 0x511490]
add eax, ecx
mov cl, byte [esp + 0x12]
mov dword [esp + 0x28], eax
mov ah, byte [esp + 0x13]
cmp ah, cl
jne 0x4f049e
mov ebp, dword [esp + 0x70]
cmp dword [esi + 0x10e34], ebp
mov ebp, dword [esp + 0x5c]
jae 0x4f0447
cmp dword [esi + 0x10e38], 0
je 0x4f049e
mov eax, dword [esp + 0x24]
movzx eax, word [ebp + eax*2 + 0x6c8c]
shr eax, 4
movzx ecx, byte [eax + 0x511490]
movzx eax, word [ebp + edi*2 + 0x6c44]
add ecx, dword [esp + 0x28]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add eax, ecx
mov cl, byte [esp + 0x12]
cmp eax, dword [edx]
ja 0x4f04a4
mov dword [edx], eax
mov eax, dword [esp + 0x70]
mov dword [esi + 0x10e34], eax
mov al, 1
mov dword [esi + 0x10e38], 0
mov byte [esi + 0x10e24], 0
jmp 0x4f04a8
mov al, byte [esp + 0x11]
jmp 0x4f04ac
mov al, byte [esp + 0x11]
mov ah, byte [esp + 0x13]
mov esi, dword [esp + 0x78]
cmp esi, 2
jb 0x4f0d88
mov edx, dword [esp + 0x74]
cmp esi, edx
cmovb edx, esi
mov dword [esp + 0x18], edx
test al, al
jne 0x4f0646
cmp ah, cl
je 0x4f0646
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov ecx, edx
sub ecx, dword [eax]
mov eax, dword [esp + 0x74]
dec ecx
inc eax
cmp esi, eax
cmovb eax, esi
push eax
push 1
push ecx
push edx
call fcn.004ef7e0
mov dword [esp + 0x44], eax
add esp, 0x10
dec eax
mov dword [esp + 0x30], eax
cmp eax, 2
jb 0x4f0642
cmp edi, 3
jg 0x4f0525
mov edx, 0x6c2c
mov ecx, 0x3556
mov ebx, 0x3646
lea edi, [edx + 0x18]
jmp 0x4f0560
cmp edi, 9
jg 0x4f0546
lea ecx, [ebx + 0x3526]
add ebx, 0x3616
lea edx, [edi*2 + 0x6c26]
lea edi, [edi*2 + 0x6c3e]
jmp 0x4f0560
lea ecx, [ebx + 0x34f6]
add ebx, 0x35e6
lea edx, [edi*2 + 0x6c20]
lea edi, [edi*2 + 0x6c38]
mov esi, dword [esp + 0x6c]
inc esi
and esi, dword [ebp + 0xaa0]
lea eax, [ecx + esi]
movzx eax, word [ebp + eax*2]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x511490]
movzx eax, word [edx + ebp]
add ecx, dword [esp + 0x1c]
xor eax, 0x7f0
mov edx, dword [esp + 0x34]
add edx, dword [esp + 0x70]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x68]
cmp eax, edx
jae 0x4f05d2
add eax, 0x623
mov ecx, edx
imul eax, eax, 0x2c
add eax, ebp
sub ecx, dword [esp + 0x68]
mov dword [esp + 0x68], edx
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x4f05c3
lea eax, [ebx + esi]
movzx eax, word [ebp + eax*2]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x511490]
movzx eax, word [edi + ebp]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add ecx, eax
imul eax, esi, 0x110
add eax, dword [esp + 0x30]
add ecx, dword [ebp + eax*4 + 0xbd54]
lea eax, [edx + 0x623]
add ecx, dword [esp + 0x2c]
imul eax, eax, 0x2c
cmp ecx, dword [eax + ebp]
jae 0x4f0642
mov dword [eax + ebp], ecx
mov eax, dword [esp + 0x70]
imul ecx, edx, 0x2c
add ecx, ebp
inc eax
mov dword [ecx + 0x10e08], eax
mov dword [ecx + 0x10e0c], 0
mov word [ecx + 0x10df8], 1
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x64]
mov esi, 2
xor ebx, ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ebx
nop dword [eax]
mov eax, dword [esp + 0x60]
mov ecx, edi
sub ecx, dword [eax + ebx*4]
mov ax, word [edi]
dec ecx
mov dword [esp + 0x30], ecx
cmp ax, word [ecx]
jne 0x4f09d0
mov esi, 2
cmp edx, esi
jbe 0x4f06c2
sub ecx, edi
lea eax, [esi + edi]
mov edi, dword [eax]
sub edi, dword [eax + ecx]
jne 0x4f069c
mov edi, dword [esp + 0x64]
add esi, 4
cmp esi, edx
jb 0x4f0685
jmp 0x4f06c2
movzx ecx, di
lea edx, [esi + 2]
test ecx, ecx
mov eax, edi
cmovne edx, esi
shr eax, 0x10
test ecx, ecx
cmovne eax, edi
lea ecx, [edx + 1]
test al, al
cmovne ecx, edx
mov edx, dword [esp + 0x18]
cmp ecx, edx
cmovb edx, ecx
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x68]
add esi, edx
mov dword [esp + 0x34], esi
cmp edi, esi
jae 0x4f06ff
lea eax, [edi + 0x623]
mov dword [esp + 0x68], esi
imul eax, eax, 0x2c
mov ecx, esi
add eax, ebp
sub ecx, edi
nop word [eax + eax]
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x4f06f0
mov dword [esp + 0x2c], edx
test ebx, ebx
jne 0x4f073c
mov eax, dword [esp + 0x24]
movzx eax, word [ebp + eax*2 + 0x6c8c]
xor eax, 0x7f0
shr eax, 4
movzx esi, byte [eax + 0x511490]
mov eax, dword [esp + 0x14]
movzx eax, word [ebp + eax*2 + 0x6c44]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add esi, eax
jmp 0x4f07ae
mov edi, dword [esp + 0x14]
movzx eax, word [ebp + edi*2 + 0x6c44]
xor eax, 0x7f0
shr eax, 4
movzx esi, byte [eax + 0x511490]
cmp ebx, 1
jne 0x4f0772
movzx eax, word [ebp + edi*2 + 0x6c5c]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add esi, eax
jmp 0x4f07ae
movzx ecx, word [ebp + edi*2 + 0x6c74]
mov eax, 2
sub eax, ebx
shr ecx, 4
shr eax, 4
and eax, 0x7f
xor ecx, eax
movzx eax, word [ebp + edi*2 + 0x6c5c]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [ecx + 0x511490]
movzx eax, byte [eax + 0x511490]
add esi, eax
add esi, ecx
imul ecx, dword [esp + 0x38], 0x110
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
add eax, 0x623
imul eax, eax, 0x2c
add edi, esi
mov dword [esp + 0x44], edi
add ecx, edx
add eax, ebp
lea ecx, [ecx*4 + 0xbd54]
add ecx, ebp
mov ebp, dword [esp + 0x70]
mov dword [esp + 0x48], ecx
mov esi, ecx
mov ecx, dword [esi]
add ecx, edi
cmp ecx, dword [eax]
jae 0x4f07f7
mov dword [eax], ecx
mov dword [eax + 4], ebp
mov dword [eax + 8], ebx
mov byte [eax - 0xc], 0
dec edx
sub esi, 4
sub eax, 0x2c
cmp edx, 2
jae 0x4f07e3
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x20], 0
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x74]
mov ebp, dword [esp + 0x5c]
lea ebx, [ecx + 1]
mov edi, dword [esp + 0x64]
cmove esi, ebx
add edx, ebx
mov dword [esp + 0x1c], esi
cmp dword [esp + 0x78], edx
cmovb edx, dword [esp + 0x78]
cmp ebx, edx
jae 0x4f0855
mov esi, dword [esp + 0x30]
lea ecx, [ebx + edi]
sub esi, edi
nop
mov al, byte [ecx]
cmp al, byte [ecx + esi]
jne 0x4f084d
inc ebx
inc ecx
cmp ebx, edx
jb 0x4f0840
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
or eax, 0xffffffff
mov dword [esp + 0x2c], ebx
sub eax, ecx
add ebx, eax
cmp ebx, 2
jb 0x4f09cc
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x6c]
mov edi, dword [ebp + 0xaa0]
add esi, ecx
movzx eax, byte [ecx + edx]
push eax
mov eax, dword [esp + 0x34]
movzx eax, byte [ecx + eax]
push eax
movzx eax, byte [ecx + edx - 1]
push 1
push eax
push esi
push ebp
call fcn.004ef840
add esp, 0x18
mov ecx, 0x35d6
cmp dword [esp + 0x14], 7
mov edx, 0x3606
cmovl edx, ecx
add eax, dword [esp + 0x44]
mov ecx, edi
and ecx, esi
inc esi
add edx, ecx
and esi, edi
movzx ecx, word [ebp + edx*2]
shr ecx, 4
movzx edx, byte [ecx + 0x511490]
add edx, eax
mov eax, dword [esp + 0x48]
add edx, dword [eax]
movzx eax, word [ebp + esi*2 + 0x6b4c]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x511490]
movzx eax, word [ebp + 0x6c36]
add ecx, edx
mov edx, dword [esp + 0x2c]
xor eax, 0x7f0
add edx, dword [esp + 0x70]
shr eax, 4
movzx edi, byte [eax + 0x511490]
mov eax, dword [esp + 0x68]
add edi, ecx
cmp eax, edx
jae 0x4f093f
add eax, 0x623
mov ecx, edx
imul eax, eax, 0x2c
add eax, ebp
sub ecx, dword [esp + 0x68]
mov dword [esp + 0x68], edx
nop dword [eax]
nop dword [eax + eax]
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x4f0930
movzx eax, word [ebp + esi*2 + 0x6d2c]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x511490]
movzx eax, word [ebp + 0x6c4e]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add ecx, eax
imul eax, esi, 0x110
mov esi, dword [esp + 0x1c]
add eax, ebx
mov ebx, dword [esp + 0x20]
add ecx, dword [ebp + eax*4 + 0xbd54]
lea eax, [edx + 0x623]
imul eax, eax, 0x2c
add ecx, edi
mov edi, dword [esp + 0x64]
cmp ecx, dword [eax + ebp]
jae 0x4f09d0
mov dword [eax + ebp], ecx
mov eax, dword [esp + 0x34]
imul ecx, edx, 0x2c
add ecx, ebp
inc eax
mov dword [ecx + 0x10e08], eax
mov eax, dword [esp + 0x70]
mov dword [ecx + 0x10e0c], 0
mov word [ecx + 0x10df8], 0x101
mov dword [ecx + 0x10dfc], eax
mov dword [ecx + 0x10e00], ebx
jmp 0x4f09d0
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
inc ebx
mov dword [esp + 0x20], ebx
cmp ebx, 4
jb 0x4f0660
mov ebx, dword [esp + 0x4c]
lea ecx, [ebp + 0x204]
cmp ebx, edx
jbe 0x4f0a14
xor edi, edi
mov ebx, edx
cmp edx, dword [ecx]
jbe 0x4f0a08
mov eax, ecx
nop word [eax + eax]
lea eax, [eax + 8]
inc edi
cmp edx, dword [eax]
ja 0x4f0a00
mov dword [ebp + edi*8 + 0x204], edx
inc edi
mov dword [esp + 0x40], edi
cmp ebx, esi
jb 0x4f0d88
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x70]
add edx, ebx
mov ebx, dword [esp + 0x68]
movzx eax, word [eax]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add dword [esp + 0x54], eax
cmp ebx, edx
jae 0x4f0a67
lea eax, [ebx + 0x623]
mov dword [esp + 0x68], edx
imul eax, eax, 0x2c
mov ecx, edx
add eax, ebp
sub ecx, ebx
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x4f0a52
lea ecx, [ebp + 0x204]
xor edx, edx
mov dword [esp + 0x24], edx
cmp esi, dword [ecx]
jbe 0x4f0a7d
lea ecx, [ecx + 8]
inc edx
cmp esi, dword [ecx]
ja 0x4f0a71
mov dword [esp + 0x24], edx
mov edi, dword [esp + 0x74]
lea ebx, [edx*8 + 0x204]
mov edx, dword [esp + 0x70]
lea eax, [esi + 1]
mov dword [esp + 0x60], eax
inc edi
add edi, esi
add ebx, ebp
mov dword [esp + 0x5c], ebx
lea eax, [edx + 0x623]
add eax, esi
imul ecx, eax, 0x2c
imul eax, dword [esp + 0x38], 0x110
add ecx, ebp
add eax, esi
mov esi, dword [esp + 0x74]
lea eax, [eax*4 + 0x750c]
add eax, ebp
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x64]
sub eax, esi
mov dword [esp + 0x30], eax
mov eax, edx
sub eax, esi
mov dword [esp + 0x50], eax
mov eax, 0xfffffffd
sub eax, esi
not esi
add edx, 0xfffffffe
mov dword [esp + 0x28], eax
mov dword [esp + 0x74], esi
mov dword [esp + 0x48], edx
mov ebx, dword [ebx + 4]
lea edx, [esi + edi]
mov dword [esp + 0x1c], ecx
lea esi, [eax + edi]
mov dword [esp + 0x18], edi
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x38], edx
cmp edx, 6
jb 0x4f0b13
mov esi, 3
cmp ebx, 0x80
jae 0x4f0b29
shl esi, 7
add esi, ebx
mov eax, dword [ebp + esi*4 + 0x105a0]
jmp 0x4f0b59
bsr edx, ebx
mov eax, ebx
shl esi, 5
add esi, edx
lea ecx, [edx - 1]
mov edx, dword [esp + 0x38]
shr eax, cl
mov ecx, ebx
and eax, 1
and ecx, 0xf
lea eax, [eax + esi*2]
mov eax, dword [ebp + eax*4 + 0x101a0]
add eax, dword [ebp + ecx*4 + 0x10da8]
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
add eax, dword [esp + 0x54]
add eax, dword [esi]
mov dword [esp + 0x44], eax
cmp eax, dword [ecx]
jae 0x4f0b7e
mov dword [ecx], eax
mov eax, dword [esp + 0x70]
mov dword [ecx + 4], eax
lea eax, [ebx + 4]
mov dword [ecx + 8], eax
mov byte [ecx - 0xc], 0
mov eax, dword [esp + 0x5c]
cmp edx, dword [eax]
jne 0x4f0d6a
mov eax, dword [esp + 0x64]
mov edx, edi
mov ecx, dword [esp + 0x60]
sub eax, ebx
dec eax
mov ebx, ecx
cmp dword [esp + 0x78], edi
mov dword [esp + 0x4c], eax
cmovb edx, dword [esp + 0x78]
cmp ecx, edx
jae 0x4f0bc7
mov ecx, dword [esp + 0x50]
mov esi, eax
add ecx, edi
sub esi, dword [esp + 0x64]
mov al, byte [ecx]
cmp al, byte [esi + ecx]
jne 0x4f0bc3
inc ebx
inc ecx
cmp ebx, edx
jb 0x4f0bb6
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x38]
mov eax, 0xffffffff
sub eax, edx
mov dword [esp + 0x34], ebx
add ebx, eax
cmp ebx, 2
jb 0x4f0d4a
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x3c]
dec eax
add ecx, eax
mov esi, dword [ebp + 0xaa0]
mov eax, dword [esp + 0x60]
and esi, ecx
movzx eax, byte [eax + edi]
push eax
mov eax, dword [esp + 0x50]
movzx eax, byte [edx + eax]
mov edx, dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0x68]
push 1
movzx eax, byte [eax + edx]
push eax
push ecx
push ebp
call fcn.004ef840
add esp, 0x18
mov edx, 0x35c6
cmp dword [esp + 0x14], 7
mov ecx, 0x35f6
cmovl ecx, edx
add eax, dword [esp + 0x44]
add ecx, esi
inc esi
and esi, dword [ebp + 0xaa0]
movzx ecx, word [ebp + ecx*2]
shr ecx, 4
movzx edx, byte [ecx + 0x511490]
add edx, eax
movzx eax, word [ebp + esi*2 + 0x6b2c]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x511490]
movzx eax, word [ebp + 0x6c34]
add ecx, edx
mov edx, dword [esp + 0x34]
xor eax, 0x7f0
add edx, dword [esp + 0x70]
shr eax, 4
movzx edi, byte [eax + 0x511490]
mov eax, dword [esp + 0x68]
add edi, ecx
cmp eax, edx
jae 0x4f0cbf
add eax, 0x623
mov ecx, edx
imul eax, eax, 0x2c
add eax, ebp
sub ecx, dword [esp + 0x68]
mov dword [esp + 0x68], edx
nop dword [eax]
nop dword [eax + eax]
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x4f0cb0
movzx eax, word [ebp + esi*2 + 0x6d0c]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x511490]
movzx eax, word [ebp + 0x6c4c]
shr eax, 4
movzx eax, byte [eax + 0x511490]
add ecx, eax
imul eax, esi, 0x110
add eax, ebx
add ecx, dword [ebp + eax*4 + 0xbd54]
lea eax, [edx + 0x623]
imul eax, eax, 0x2c
add ecx, edi
mov edi, dword [esp + 0x18]
cmp ecx, dword [eax + ebp]
jae 0x4f0d4a
mov dword [eax + ebp], ecx
mov eax, dword [esp + 0x30]
imul ecx, edx, 0x2c
add eax, edi
add ecx, ebp
mov dword [ecx + 0x10e08], eax
mov eax, dword [esp + 0x70]
mov dword [ecx + 0x10dfc], eax
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [ecx + 0x10e0c], 0
mov word [ecx + 0x10df8], 0x101
mov dword [ecx + 0x10e00], eax
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x5c]
inc edx
add ebx, 8
mov dword [esp + 0x24], edx
mov dword [esp + 0x5c], ebx
cmp edx, dword [esp + 0x40]
je 0x4f0d88
mov ecx, dword [esp + 0x1c]
jmp 0x4f0d6e
mov ebx, dword [esp + 0x5c]
add dword [esp + 0x20], 4
add ecx, 0x2c
inc dword [esp + 0x60]
inc edi
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x74]
jmp 0x4f0af0
mov eax, dword [esp + 0x68]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret