Function at 0x4d5b00
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x88
push ebx
push ebp
push esi
mov esi, dword [esp + 0x98]
push edi
cmp dword [esi + 0x34], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
jne 0x4d5b3d
lea eax, [esp + 0x30]
push eax
push esi
call fcn.004d9390
mov dword [esp + 0x3c], eax
add esp, 8
mov eax, dword [esp + 0x30]
jmp 0x4d5b47
mov eax, dword [esi + 0x20]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0x24]
mov ebx, dword [esi + 0x28]
mov dword [esp + 0x3c], eax
cmp ebx, 2
jb 0x4d6e68
push dword [esi]
mov eax, 0x111
cmp ebx, eax
cmova ebx, eax
mov eax, dword [esi + 0xc]
call eax
mov dl, byte [eax - 1]
dec eax
xor ecx, ecx
mov dword [esp + 0x24], eax
add esp, 4
mov dword [esp + 0x28], ecx
xor ebp, ebp
mov byte [esp + 0x12], dl
jmp 0x4d5b85
mov eax, dword [esp + 0x20]
mov edi, dword [esi + ebp*4 + 0x38]
mov dword [esp + ebp*4 + 0x60], edi
neg edi
lea edx, [edi + eax]
mov al, byte [esp + 0x12]
cmp al, byte [edx]
mov eax, dword [esp + 0x20]
jne 0x4d5be9
mov al, byte [eax + 1]
cmp al, byte [edx + 1]
jne 0x4d5be9
mov edx, 2
cmp ebx, edx
jbe 0x4d5bc6
mov ecx, dword [esp + 0x20]
add ecx, edx
mov al, byte [ecx]
cmp al, byte [ecx + edi]
jne 0x4d5bc2
inc edx
inc ecx
cmp edx, ebx
jb 0x4d5bb5
mov ecx, dword [esp + 0x28]
mov dword [esp + ebp*4 + 0x88], edx
mov eax, ebp
cmp edx, dword [esp + ecx*4 + 0x88]
cmovbe eax, ecx
mov ecx, eax
cmp edx, 0x111
je 0x4d5bfa
mov dword [esp + 0x28], ecx
jmp 0x4d5bf4
mov dword [esp + ebp*4 + 0x88], 0
inc ebp
cmp ebp, 4
jb 0x4d5b81
mov edi, dword [esp + ecx*4 + 0x88]
mov eax, dword [esi + 0x30]
cmp edi, eax
jb 0x4d5c2f
mov dword [esi + 0x90], ecx
lea ecx, [edi - 1]
add dword [esi + 0x34], ecx
lea ecx, [edi - 1]
push ecx
push dword [esi]
mov ecx, dword [esi + 0x14]
call ecx
add esp, 8
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
mov ebp, dword [esp + 0x34]
cmp ebp, eax
jb 0x4d5c6c
mov eax, dword [esp + 0x3c]
mov eax, dword [esi + eax*4 + 0x744]
add eax, 4
mov dword [esi + 0x90], eax
lea eax, [ebp - 1]
add dword [esi + 0x34], eax
lea eax, [ebp - 1]
push eax
push dword [esi]
mov eax, dword [esi + 0x14]
call eax
add esp, 8
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
mov ecx, dword [esp + 0x20]
mov eax, ecx
mov ebx, dword [esp + 0x60]
sub eax, ebx
mov dword [esp + 0x48], ebx
cmp edi, ebp
mov ebx, ebp
mov dl, byte [ecx]
cmova ebx, edi
mov al, byte [eax]
mov byte [esp + 0x12], dl
mov byte [esp + 0x13], al
mov dword [esp + 0x14], ebx
cmp ebx, 2
jae 0x4d5ca0
cmp dl, al
jne 0x4d6e68
mov ax, word [esi + 0x2c]
mov word [esi + 0xbaa4], ax
mov edi, dword [esi + 0x4c]
mov eax, dword [esp + 0xa0]
and edi, eax
movzx edx, byte [ecx - 1]
mov ecx, dword [esi + 0x94]
shl eax, 8
add edx, eax
mov dword [esp + 0x18], edi
and edx, dword [esi + 0x48]
mov eax, dword [esi + 0x50]
shl edx, cl
cmp dword [esi + 0x2c], 7
lea ecx, [edx + edx*2]
movzx edx, byte [esp + 0x12]
lea ebp, [eax + ecx*2]
jb 0x4d5cfe
lea eax, [esi + 0x548]
push eax
movzx eax, byte [esp + 0x17]
push eax
push edx
push ebp
call fcn.004d76d0
add esp, 0x10
mov edi, eax
jmp 0x4d5d2b
xor edi, edi
or edx, 0x100
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
movzx eax, word [ebp + edx*2]
and ecx, 0x7f
shr eax, 4
xor eax, ecx
add edi, dword [esi + eax*4 + 0x548]
cmp edx, 2
jae 0x4d5d06
mov edx, dword [esi + 0x2c]
mov ebp, edx
mov ecx, dword [esp + 0x18]
shl ebp, 4
add ebp, ecx
movzx eax, word [esi + ebp*2 + 0x1c98]
shr eax, 4
add edi, dword [esi + eax*4 + 0x548]
xor eax, eax
mov word [esi + 0xbac6], ax
mov dword [esi + 0xbac0], edi
mov dword [esi + 0xbacc], 0xffffffff
movzx eax, word [esi + ebp*2 + 0x1c98]
xor eax, 0x7f0
shr eax, 4
mov eax, dword [esi + eax*4 + 0x548]
mov dword [esp + 0x40], eax
movzx eax, word [esi + edx*2 + 0x1c38]
xor eax, 0x7f0
shr eax, 4
mov eax, dword [esi + eax*4 + 0x548]
add eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x12]
cmp byte [esp + 0x13], al
jne 0x4d5e12
cmp dword [esp + 0x88], 0
jne 0x4d5e12
movzx ecx, word [esi + edx*2 + 0x1c50]
movzx eax, word [esi + ebp*2 + 0x1e18]
shr ecx, 4
shr eax, 4
mov ecx, dword [esi + ecx*4 + 0x548]
add ecx, dword [esi + eax*4 + 0x548]
or eax, 0xffffffff
add ecx, dword [esp + 0x28]
cmp ecx, edi
jae 0x4d5df3
mov dword [esi + 0xbac0], ecx
xor eax, eax
mov dword [esi + 0xbacc], 0
cmp ebx, 2
jae 0x4d5e0e
pop edi
mov dword [esi + 0x90], eax
mov eax, 1
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
xor ebp, ebp
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x28]
mov dword [esi + 0xbac8], 1
mov dword [esi + 0xbab0], edx
mov dword [esi + 0xbab4], eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x68]
mov dword [esi + 0xbab8], eax
mov eax, dword [esp + 0x6c]
mov dword [esi + 0xbabc], eax
nop
mov edx, dword [esp + ebp*4 + 0x88]
cmp edx, 2
jb 0x4d5f5f
mov eax, dword [esi + 0x2c]
movzx ecx, word [esi + eax*2 + 0x1c50]
test ebp, ebp
jne 0x4d5e9b
mov edi, dword [esp + 0x18]
shl eax, 4
add eax, edi
shr ecx, 4
movzx eax, word [esi + eax*2 + 0x1e18]
xor eax, 0x7f0
shr eax, 4
mov eax, dword [esi + eax*4 + 0x548]
add eax, dword [esi + ecx*4 + 0x548]
jmp 0x4d5f07
movzx edi, word [esi + eax*2 + 0x1c68]
xor ecx, 0x7f0
shr ecx, 4
mov ecx, dword [esi + ecx*4 + 0x548]
mov dword [esp + 0x20], ecx
cmp ebp, 1
jne 0x4d5eca
shr edi, 4
mov eax, ecx
add eax, dword [esi + edi*4 + 0x548]
jmp 0x4d5f03
movzx ecx, word [esi + eax*2 + 0x1c80]
xor edi, 0x7f0
mov eax, 2
shr ecx, 4
sub eax, ebp
shr edi, 4
shr eax, 4
and eax, 0x7f
xor ecx, eax
mov eax, dword [esi + ecx*4 + 0x548]
add eax, dword [esi + edi*4 + 0x548]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
add eax, ebx
mov ecx, edx
mov dword [esp + 0x30], eax
imul eax, edi, 0x110
shl ecx, 5
add ecx, 0xbaac
add ecx, esi
mov dword [esp + 0x38], eax
lea edi, [eax + 0x1da6]
add edi, edx
lea edi, [esi + edi*4]
nop
mov eax, dword [edi]
add eax, dword [esp + 0x30]
cmp eax, dword [ecx - 0xc]
jae 0x4d5f49
mov dword [ecx - 0xc], eax
xor eax, eax
mov dword [ecx - 4], edx
mov dword [ecx], ebp
mov word [ecx - 6], ax
dec edx
sub edi, 4
sub ecx, 0x20
cmp edx, 2
jae 0x4d5f30
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x18]
jmp 0x4d5f65
imul edx, ecx, 0x110
inc ebp
cmp ebp, 4
jb 0x4d5e50
mov edi, dword [esp + 0x88]
mov ebx, dword [esp + 0x14]
inc edi
cmp edi, dword [esp + 0x34]
ja 0x4d60ad
mov eax, dword [esi + 0x2c]
xor ebp, ebp
movzx eax, word [esi + eax*2 + 0x1c38]
shr eax, 4
mov eax, dword [esi + eax*4 + 0x548]
add eax, dword [esp + 0x40]
mov dword [esp + 0x30], eax
cmp edi, 2
jae 0x4d5fae
lea edi, [ebp + 2]
jmp 0x4d5fd2
cmp edi, dword [esi + 0x748]
jbe 0x4d5fd2
nop word [eax + eax]
add ebp, 2
cmp edi, dword [esi + ebp*4 + 0x748]
ja 0x4d5fc0
imul edx, ecx, 0x110
mov ecx, edi
lea ebx, [edi + 0xca5]
shl ecx, 5
add ecx, 0xbaac
add ecx, esi
add ebx, edx
lea ebx, [esi + ebx*4]
mov eax, dword [ebx]
mov edx, dword [esi + ebp*4 + 0x74c]
add eax, dword [esp + 0x30]
mov dword [esp + 0x34], edx
lea edx, [edi - 2]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x38], eax
cmp edi, 5
jb 0x4d6010
mov edx, 3
mov eax, dword [esp + 0x34]
cmp eax, 0x80
jae 0x4d6030
shl edx, 7
and eax, 0x7f
add edx, eax
mov eax, dword [esi + edx*4 + 0x1418]
mov edx, dword [esp + 0x34]
jmp 0x4d606a
cmp eax, 0x20000
sbb ecx, ecx
shl edx, 5
and ecx, 0xfffffff6
add ecx, 0x10
shr eax, cl
add edx, ecx
movzx eax, byte [eax + esi + 0x2a98]
lea eax, [eax + edx*2]
mov edx, dword [esp + 0x34]
mov eax, dword [esi + eax*4 + 0x1018]
mov ecx, edx
and ecx, 0xf
add eax, dword [esi + ecx*4 + 0xfd8]
mov ecx, dword [esp + 0x28]
add eax, dword [esp + 0x38]
mov esi, dword [esp + 0x9c]
cmp eax, dword [ecx - 0xc]
jae 0x4d608b
mov dword [ecx - 0xc], eax
lea eax, [edx + 4]
mov dword [ecx], eax
xor eax, eax
mov dword [ecx - 4], edi
mov word [ecx - 6], ax
cmp edi, dword [esi + ebp*4 + 0x748]
jne 0x4d609d
add ebp, 2
cmp ebp, dword [esp + 0x3c]
je 0x4d60a9
inc edi
add ebx, 4
add ecx, 0x20
jmp 0x4d5fea
mov ebx, dword [esp + 0x14]
mov ebp, 1
mov dword [esp + 0x1c], ebp
cmp ebx, ebp
je 0x4d6d9b
mov dword [esp + 0x14], ebx
cmp ebp, 0x7c0
jae 0x4d6d43
lea eax, [esp + 0x34]
push eax
push esi
call fcn.004d9390
mov ecx, eax
add esp, 8
mov dword [esp + 0x5c], ecx
cmp ecx, dword [esi + 0x30]
jae 0x4d6d37
inc dword [esp + 0xa0]
lea edi, [ebp + 0x5d5]
shl edi, 5
mov edx, ebp
add edi, esi
sub edx, dword [edi + 8]
cmp dword [edi + 8], 1
jne 0x4d6139
shl edx, 5
mov eax, 0x5cad74
cmp dword [edi + 0xc], 0
movzx ecx, word [edx + esi + 0xbaa4]
mov edx, 0x5cad98
cmove eax, edx
mov edx, dword [esp + 0x44]
movzx ebp, byte [eax + ecx]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x2c], ebp
jmp 0x4d6272
movzx ebp, word [edi + 6]
mov ecx, dword [edi + 0xc]
test bp, bp
je 0x4d6187
sub edx, ebp
mov dword [esp + 0x2c], 8
cmp ebp, 1
jne 0x4d6162
cmp ecx, 4
sbb eax, eax
neg eax
add eax, 7
mov dword [esp + 0x2c], eax
mov ebp, dword [esp + 0x2c]
lea eax, [edx + 0x5d5]
shl eax, 5
add eax, esi
mov dword [esp + 0x70], ebp
mov edx, dword [eax + 0x10]
mov dword [esp + 0x44], edx
cmp ecx, 4
jae 0x4d624a
jmp 0x4d61be
mov eax, edx
shl eax, 5
movzx eax, word [eax + esi + 0xbaa4]
cmp ecx, 4
jae 0x4d622d
movzx eax, byte [eax + 0x5cad8c]
mov dword [esp + 0x2c], eax
lea eax, [edx + 0x5d5]
mov ebp, dword [esp + 0x2c]
shl eax, 5
add eax, esi
mov edx, dword [eax + 0x10]
mov dword [esp + 0x44], edx
mov edx, dword [eax + 0x14]
test ecx, ecx
jne 0x4d61dc
mov ebp, dword [eax + 0x18]
mov ecx, dword [esp + 0x44]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x68], ebp
mov ebp, dword [esp + 0x2c]
jmp 0x4d625e
mov esi, dword [esp + 0x44]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x48], edx
cmp ecx, 1
jne 0x4d620c
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x48]
jmp 0x4d626e
mov dword [esp + 0x68], edx
mov edx, dword [eax + ecx*4 + 0x10]
xor ecx, 1
mov dword [esp + 0x48], edx
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x44]
mov eax, dword [eax + ecx*4 + 0x10]
mov ecx, dword [esp + 0x48]
jmp 0x4d626e
movzx eax, byte [eax + str._a_a_a_a_a_a_a_n_n_n_n_n_b_b_b_b_b_b_b_v_v_v_v_v_t_t_t_t_t_t_t_v_v_v_v_v]
mov dword [esp + 0x2c], eax
lea eax, [edx + 0x5d5]
mov ebp, dword [esp + 0x2c]
shl eax, 5
add eax, esi
mov edx, dword [eax + 0x10]
mov esi, dword [eax + 0x14]
add ecx, 0xfffffffd
mov eax, dword [eax + 0x18]
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x64], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x68]
mov word [edi + 4], bp
mov dword [edi + 0x10], ecx
mov dword [edi + 0x14], edx
mov dword [edi + 0x18], eax
mov eax, dword [esp + 0x6c]
mov dword [edi + 0x1c], eax
push dword [esi]
mov eax, dword [esi + 0xc]
call eax
mov ecx, dword [esi + 0x4c]
xor edx, edx
and ecx, dword [esp + 0xa4]
add esp, 4
mov dword [esp + 0x30], ecx
lea ebp, [eax - 1]
mov dword [esp + 0x18], edx
mov al, byte [ebp]
mov byte [esp + 0x12], al
mov eax, ebp
sub eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ebp
mov al, byte [eax]
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x2c]
shl eax, 4
add eax, ecx
mov dword [esp + 0x7c], eax
movzx ecx, word [esi + eax*2 + 0x1c98]
mov eax, ecx
shr ecx, 4
xor eax, 0x7f0
shr eax, 4
mov eax, dword [esi + eax*4 + 0x548]
add eax, dword [edi]
mov dword [esp + 0x38], eax
mov eax, dword [esi + ecx*4 + 0x548]
add eax, dword [edi]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
lea edi, [edi + 0x5d6]
shl edi, 5
add edi, esi
mov dword [esp + 0x4c], edi
mov edx, dword [edi]
mov dword [esp + 0x58], edx
cmp edx, 0x40000000
jae 0x4d632d
mov cl, byte [esp + 0x12]
cmp byte [esp + 0x13], cl
je 0x4d6331
cmp eax, edx
jbe 0x4d633c
xor ebp, ebp
mov dword [esp + 0x20], ebp
jmp 0x4d63f1
mov eax, dword [esp + 0xa0]
movzx edx, byte [ebp - 1]
mov ecx, dword [esi + 0x94]
shl eax, 8
add edx, eax
mov eax, dword [esi + 0x50]
and edx, dword [esi + 0x48]
shl edx, cl
cmp dword [esp + 0x2c], 7
lea ecx, [edx + edx*2]
movzx edx, byte [esp + 0x12]
lea ecx, [eax + ecx*2]
mov dword [esp + 0x50], ecx
jb 0x4d638b
lea eax, [esi + 0x548]
push eax
movzx eax, byte [esp + 0x17]
push eax
push edx
push ecx
call fcn.004d76d0
add esp, 0x10
mov ebp, eax
jmp 0x4d63bf
mov edi, dword [esp + 0x50]
xor ebp, ebp
or edx, 0x100
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
movzx eax, word [edi + edx*2]
and ecx, 0x7f
shr eax, 4
xor eax, ecx
add ebp, dword [esi + eax*4 + 0x548]
cmp edx, 2
jae 0x4d6397
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x58]
add ecx, ebp
mov dword [esp + 0x20], ecx
cmp ecx, edx
jae 0x4d63f1
xor eax, eax
mov dword [edi], ecx
mov dword [edi + 8], 1
mov edx, ecx
mov dword [edi + 0xc], 0xffffffff
mov word [edi + 6], ax
mov dword [esp + 0x18], 1
mov ecx, dword [esp + 0x2c]
mov ebp, 0x7ff
sub ebp, dword [esp + 0x1c]
lea eax, [ecx + 0xe1c]
lea eax, [esi + eax*2]
mov dword [esp + 0x70], eax
movzx eax, word [eax]
xor eax, 0x7f0
shr eax, 4
mov eax, dword [esi + eax*4 + 0x548]
add eax, dword [esp + 0x38]
cmp dword [esi + 0x28], ebp
mov dword [esp + 0x54], eax
cmovbe ebp, dword [esi + 0x28]
cmp ecx, 7
mov al, byte [esp + 0x13]
mov cl, byte [esp + 0x12]
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 0x20]
jae 0x4d64b9
cmp al, cl
jne 0x4d64b9
cmp dword [esp + 0x54], edx
jae 0x4d64b9
cmp dword [edi + 8], 2
jb 0x4d645b
cmp dword [edi + 0xc], 0
je 0x4d64b9
mov eax, dword [esp + 0x7c]
movzx ecx, word [esi + eax*2 + 0x1e18]
mov eax, dword [esp + 0x2c]
shr ecx, 4
movzx eax, word [esi + eax*2 + 0x1c50]
mov ecx, dword [esi + ecx*4 + 0x548]
shr eax, 4
add ecx, dword [esi + eax*4 + 0x548]
add ecx, dword [esp + 0x54]
cmp ecx, edx
jae 0x4d64b1
xor eax, eax
mov dword [edi], ecx
mov cl, byte [esp + 0x12]
xor edx, edx
mov word [edi + 6], ax
mov al, byte [esp + 0x13]
mov dword [edi + 8], 1
mov dword [edi + 0xc], 0
jmp 0x4d64bd
mov al, byte [esp + 0x13]
mov cl, byte [esp + 0x12]
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x3c], 2
jb 0x4d6d24
mov edi, dword [esi + 0x30]
mov ebx, edi
cmp dword [esp + 0x3c], edi
cmovbe ebx, dword [esp + 0x3c]
mov dword [esp + 0x40], ebx
test edx, edx
jne 0x4d6626
test ebp, ebp
je 0x4d6626
mov edx, dword [esp + 0x24]
cmp al, cl
je 0x4d6620
mov ecx, dword [esp + 0x3c]
cmp ecx, 2
jbe 0x4d6620
mov ebp, dword [esp + 0x28]
mov al, byte [edx + 1]
cmp al, byte [ebp + 1]
jne 0x4d6620
mov al, byte [edx + 2]
cmp al, byte [ebp + 2]
jne 0x4d6620
inc edi
mov edx, 3
cmp edi, ecx
cmova edi, ecx
cmp edi, edx
jbe 0x4d6544
mov ebx, dword [esp + 0x24]
lea ecx, [ebp + 3]
sub ebx, ebp
mov al, byte [ebx + ecx]
cmp al, byte [ecx]
jne 0x4d6544
inc edx
inc ecx
cmp edx, edi
jb 0x4d6537
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0xa0]
mov ebp, dword [esp + 0x1c]
inc ebx
and ebx, dword [esi + 0x4c]
add ebp, edx
movzx edi, byte [eax + 0x5cad74]
mov eax, ebp
cmp dword [esp + 0x14], ebp
cmovae eax, dword [esp + 0x14]
dec edx
movzx ecx, word [esi + edi*2 + 0x1c38]
add ebp, 0x5d5
mov dword [esp + 0x4c], edx
xor ecx, 0x7f0
mov dword [esp + 0x14], eax
mov edx, edi
shl edx, 4
add edx, ebx
shr ecx, 4
shl ebp, 5
add ebp, esi
movzx eax, word [esi + edx*2 + 0x1e18]
mov ecx, dword [esi + ecx*4 + 0x548]
xor eax, 0x7f0
shr eax, 4
add ecx, dword [esi + eax*4 + 0x548]
movzx eax, word [esi + edx*2 + 0x1c98]
mov edx, ecx
xor eax, 0x7f0
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x4c]
shr eax, 4
add edx, dword [esi + eax*4 + 0x548]
movzx eax, word [esi + edi*2 + 0x1c50]
mov edi, dword [esp + 0x14]
shr eax, 4
add edx, dword [esi + eax*4 + 0x548]
imul eax, ebx, 0x110
add eax, ecx
add edx, dword [esi + eax*4 + 0x7698]
add edx, dword [esp + 0x20]
cmp edx, dword [ebp]
jae 0x4d662a
mov eax, 1
mov dword [ebp], edx
mov dword [ebp + 8], ecx
mov dword [ebp + 0xc], 0
mov word [ebp + 6], ax
mov dword [esp + 0x14], edi
jmp 0x4d662a
mov edi, dword [esp + 0x14]
jmp 0x4d662e
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
xor ecx, ecx
mov dword [esp + 0x28], 2
mov dword [esp + 0x18], ecx
nop dword [eax]
mov ebx, dword [esp + ecx*4 + 0x60]
mov ebp, edx
mov al, byte [edx]
sub ebp, ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x58], ebp
cmp al, byte [ebp]
jne 0x4d6995
mov al, byte [edx + 1]
cmp al, byte [ebp + 1]
jne 0x4d6995
mov edx, 2
mov dword [esp + 0x50], edx
cmp dword [esp + 0x40], edx
jbe 0x4d6698
mov esi, dword [esp + 0x40]
lea ecx, [ebp + 2]
mov al, byte [ebx + ecx]
cmp al, byte [ecx]
jne 0x4d668d
inc edx
inc ecx
cmp edx, esi
jb 0x4d6680
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x50], edx
mov ecx, dword [esp + 0x1c]
add ecx, edx
cmp edi, ecx
mov dword [esp + 0x74], ecx
mov eax, ecx
cmovae eax, edi
mov edi, edx
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x4c], ecx
movzx ecx, word [esi + eax*2 + 0x1c50]
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4d66f0
mov eax, dword [esp + 0x7c]
shr ecx, 4
movzx eax, word [esi + eax*2 + 0x1e18]
xor eax, 0x7f0
shr eax, 4
mov ebp, dword [esi + eax*4 + 0x548]
add ebp, dword [esi + ecx*4 + 0x548]
jmp 0x4d6752
xor ecx, 0x7f0
shr ecx, 4
mov ebp, dword [esi + ecx*4 + 0x548]
mov ecx, dword [esp + 0x2c]
movzx ebx, word [esi + ecx*2 + 0x1c68]
cmp eax, 1
jne 0x4d671d
shr ebx, 4
add ebp, dword [esi + ebx*4 + 0x548]
jmp 0x4d6752
movzx ecx, word [esi + ecx*2 + 0x1c80]
mov eax, 2
sub eax, dword [esp + 0x18]
xor ebx, 0x7f0
shr eax, 4
and eax, 0x7f
shr ecx, 4
xor ecx, eax
shr ebx, 4
mov eax, dword [esi + ecx*4 + 0x548]
add eax, dword [esi + ebx*4 + 0x548]
add ebp, eax
imul eax, dword [esp + 0x30], 0x110
add ebp, dword [esp + 0x54]
mov dword [esp + 0x20], ebp
add eax, 0x1da6
add eax, edx
lea eax, [esi + eax*4]
mov dword [esp + 0x78], eax
mov ebx, eax
mov eax, dword [esp + 0x74]
shl eax, 5
add eax, 0xbaac
add eax, esi
mov esi, dword [esp + 0x18]
mov ecx, dword [ebx]
add ecx, ebp
cmp ecx, dword [eax - 0xc]
jae 0x4d679b
mov dword [eax - 0xc], ecx
xor ecx, ecx
mov dword [eax - 4], edi
mov dword [eax], esi
mov word [eax - 6], cx
dec edi
sub ebx, 4
sub eax, 0x20
cmp edi, 2
jae 0x4d6784
test esi, esi
jne 0x4d67b6
lea eax, [edx + 1]
mov dword [esp + 0x28], eax
mov ebp, eax
jmp 0x4d67b9
lea ebp, [edx + 1]
mov esi, dword [esp + 0x9c]
mov eax, dword [esi + 0x30]
add eax, ebp
cmp eax, dword [esp + 0x3c]
cmova eax, dword [esp + 0x3c]
add ebp, 2
mov dword [esp + 0x74], eax
cmp ebp, eax
ja 0x4d6989
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x24]
add ecx, ebp
mov ebx, dword [esp + 0x4c]
mov edi, ebx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x14], edi
mov al, byte [eax + ebp - 2]
cmp al, byte [ecx - 2]
jne 0x4d698d
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], edi
mov al, byte [eax + ebp - 1]
cmp al, byte [ecx - 1]
jne 0x4d698d
mov ecx, dword [esp + 0xa0]
lea eax, [esi + 0x548]
push eax
mov eax, dword [esp + 0x5c]
add ecx, edx
mov edi, ecx
shl ecx, 8
and edi, dword [esi + 0x4c]
movzx eax, byte [edx + eax]
push eax
mov eax, dword [esp + 0x2c]
movzx eax, byte [edx + eax]
push eax
mov eax, dword [esp + 0x30]
movzx eax, byte [edx + eax - 1]
add eax, ecx
mov ecx, dword [esi + 0x94]
and eax, dword [esi + 0x48]
shl eax, cl
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x50]
lea eax, [eax + ecx*2]
push eax
call fcn.004d76d0
mov ecx, dword [esp + 0x3c]
add esp, 0x10
mov edx, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x5cad8c]
shl ecx, 4
add ecx, edi
movzx ecx, word [esi + ecx*2 + 0x1c98]
shr ecx, 4
add eax, dword [esi + ecx*4 + 0x548]
mov ecx, dword [esp + 0x78]
add eax, dword [ecx]
add edx, eax
lea eax, [edi + 1]
and eax, dword [esi + 0x4c]
mov dword [esp + 0x78], eax
movzx ecx, word [esi + eax*2 + 0x1eb8]
movzx eax, word [esi + eax*2 + 0x1d38]
xor ecx, 0x7f0
xor eax, 0x7f0
shr ecx, 4
shr eax, 4
mov ecx, dword [esi + ecx*4 + 0x548]
add ecx, dword [esi + eax*4 + 0x548]
movzx eax, word [esi + 0x1c42]
xor eax, 0x7f0
shr eax, 4
add ecx, dword [esi + eax*4 + 0x548]
movzx eax, word [esi + 0x1c5a]
shr eax, 4
add ecx, dword [esi + eax*4 + 0x548]
add edx, ecx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x74]
cmp ebp, edx
jae 0x4d6923
mov ecx, dword [esp + 0x80]
mov edi, dword [esp + 0x84]
mov al, byte [ecx + edi]
cmp al, byte [ecx]
jne 0x4d6923
inc ebp
inc ecx
cmp ebp, edx
jb 0x4d6916
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x50]
lea edi, [ebx + ebp]
mov ecx, edi
cmp dword [esp + 0x4c], ecx
cmovae edi, dword [esp + 0x4c]
or eax, 0xffffffff
sub eax, edx
mov dword [esp + 0x14], edi
add ebp, eax
add ecx, 0x5d5
imul eax, dword [esp + 0x78], 0x110
shl ecx, 5
add ecx, esi
add eax, ebp
mov eax, dword [esi + eax*4 + 0x7698]
add eax, dword [esp + 0x20]
cmp eax, dword [ecx]
jae 0x4d697f
mov dword [ecx], eax
lea eax, [edx + 1]
mov word [ecx + 6], ax
mov eax, dword [esp + 0x18]
mov dword [ecx + 8], ebp
mov dword [ecx + 0xc], eax
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
jmp 0x4d6999
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x18], ecx
cmp ecx, 4
jb 0x4d6640
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x5c]
cmp ebp, edx
jbe 0x4d69e1
xor eax, eax
xor ecx, ecx
mov ebp, edx
cmp edx, dword [esi + 0x748]
jbe 0x4d69d3
add eax, 2
mov ecx, eax
mov dword [esp + 0x34], eax
cmp edx, dword [esi + ecx*4 + 0x748]
ja 0x4d69c1
add eax, 2
mov dword [esi + ecx*4 + 0x748], edx
mov dword [esp + 0x34], eax
cmp ebp, dword [esp + 0x28]
jb 0x4d6d20
mov eax, dword [esp + 0x70]
movzx eax, word [eax]
shr eax, 4
mov eax, dword [esi + eax*4 + 0x548]
add eax, dword [esp + 0x38]
mov dword [esp + 0x70], eax
lea eax, [ebx + ebp]
cmp edi, eax
cmovae eax, edi
mov edi, dword [esp + 0x28]
xor edx, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x40], edx
cmp edi, dword [esi + 0x748]
jbe 0x4d6a32
add edx, 2
cmp edi, dword [esi + edx*4 + 0x748]
ja 0x4d6a22
mov dword [esp + 0x40], edx
mov ebx, dword [esi + edx*4 + 0x74c]
lea ebp, [edi + 3]
cmp ebx, 0x20000
mov dword [esp + 0x50], ebx
mov eax, ebx
sbb ecx, ecx
and ecx, 0xfffffff6
add ecx, 0x10
shr eax, cl
movzx eax, byte [eax + esi + 0x2a98]
lea eax, [eax + ecx*2]
imul ecx, dword [esp + 0x30], 0x110
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xa0]
add eax, edi
shl eax, 8
add ecx, 0xca5
mov dword [esp + 0x54], eax
add ecx, edi
add edi, dword [esp + 0x1c]
shl edi, 5
add edi, 0xbaac
add edi, esi
lea ecx, [esi + ecx*4]
mov eax, dword [ecx]
add eax, dword [esp + 0x70]
mov dword [esp + 0x4c], ecx
mov ecx, 3
mov dword [esp + 0x5c], eax
lea eax, [ebp - 5]
cmp eax, ecx
mov dword [esp + 0x58], edi
mov dword [esp + 0x20], ebp
cmovb ecx, eax
mov eax, ebx
cmp ebx, 0x80
jae 0x4d6ad1
shl ecx, 7
and eax, 0x7f
add ecx, eax
mov ecx, dword [esi + ecx*4 + 0x1418]
jmp 0x4d6ae9
shl ecx, 6
and eax, 0xf
add ecx, dword [esp + 0x38]
mov ecx, dword [esi + ecx*4 + 0x1018]
add ecx, dword [esi + eax*4 + 0xfd8]
mov eax, dword [esp + 0x5c]
add eax, ecx
lea ecx, [ebp - 3]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x28], ecx
cmp eax, dword [edi - 0xc]
jae 0x4d6b10
mov dword [edi - 0xc], eax
lea eax, [ebx + 4]
mov dword [edi], eax
xor eax, eax
mov dword [edi - 4], ecx
mov word [edi - 6], ax
cmp ecx, dword [esi + edx*4 + 0x748]
jne 0x4d6d08
mov edi, dword [esi + 0x30]
mov edx, ebp
mov ecx, dword [esp + 0x24]
add edi, 0xfffffffe
sub ecx, ebx
mov dword [esp + 0x38], edx
add edi, ebp
dec ecx
cmp edi, dword [esp + 0x3c]
mov dword [esp + 0x30], ecx
cmova edi, dword [esp + 0x3c]
cmp ebp, edi
ja 0x4d6cc3
mov ebx, dword [esp + 0x24]
mov al, byte [ebx + ebp - 2]
cmp al, byte [ecx + ebp - 2]
jne 0x4d6cc3
mov al, byte [ebx + ebp - 1]
cmp al, byte [ecx + ebp - 1]
jne 0x4d6cc3
cmp ebp, edi
jae 0x4d6b8b
lea ecx, [ebx + ebp]
mov ebx, dword [esp + 0x30]
sub ebx, dword [esp + 0x24]
mov al, byte [ecx]
cmp al, byte [ebx + ecx]
jne 0x4d6b83
inc edx
inc ecx
cmp edx, edi
jb 0x4d6b76
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x38], edx
mov edi, dword [esp + 0xa0]
lea eax, [esi + 0x548]
push eax
movzx eax, byte [ecx + ebp - 3]
add edi, 0xfffffffd
mov ecx, dword [esp + 0x28]
add edi, ebp
push eax
and edi, dword [esi + 0x4c]
movzx eax, byte [ecx + ebp - 3]
push eax
movzx eax, byte [ecx + ebp - 4]
add eax, dword [esp + 0x60]
and eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x94]
shl eax, cl
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x50]
lea eax, [eax + ecx*2]
push eax
call fcn.004d76d0
mov ebp, eax
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x3c]
lea edx, [edi + 1]
and edx, dword [esi + 0x4c]
add esp, 0x10
movzx ecx, byte [eax + str._a_a_a_a_a_a_a_n_n_n_n_n_b_b_b_b_b_b_b_v_v_v_v_v_t_t_t_t_t_t_t_v_v_v_v_v]
shl ecx, 4
add ecx, edi
mov edi, dword [esp + 0x1c]
add edi, ebx
mov eax, edi
movzx ecx, word [esi + ecx*2 + 0x1c98]
shr ecx, 4
add ebp, dword [esi + ecx*4 + 0x548]
add ebp, dword [esp + 0x5c]
cmp dword [esp + 0x14], edi
movzx ecx, word [esi + edx*2 + 0x1e98]
cmovae eax, dword [esp + 0x14]
xor ecx, 0x7f0
mov dword [esp + 0x14], eax
add edi, 0x5d5
or eax, 0xffffffff
shr ecx, 4
sub eax, dword [esp + 0x28]
add ebx, eax
shl edi, 5
movzx eax, word [esi + edx*2 + 0x1d18]
add edi, esi
mov ecx, dword [esi + ecx*4 + 0x548]
xor eax, 0x7f0
shr eax, 4
add ecx, dword [esi + eax*4 + 0x548]
movzx eax, word [esi + 0x1c40]
xor eax, 0x7f0
shr eax, 4
add ecx, dword [esi + eax*4 + 0x548]
movzx eax, word [esi + 0x1c58]
shr eax, 4
add ecx, dword [esi + eax*4 + 0x548]
imul eax, edx, 0x110
add eax, ebx
add ecx, dword [esi + eax*4 + 0x7698]
add ecx, ebp
mov ebp, dword [esp + 0x20]
cmp ecx, dword [edi]
jae 0x4d6cc3
mov eax, dword [esp + 0x28]
inc eax
mov dword [edi + 8], ebx
mov ebx, dword [esp + 0x14]
mov word [edi + 6], ax
mov eax, dword [esp + 0x50]
add eax, 4
mov dword [edi], ecx
mov dword [edi + 0xc], eax
mov dword [esp + 0x14], ebx
jmp 0x4d6cc7
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
add edx, 2
mov dword [esp + 0x40], edx
cmp edx, dword [esp + 0x34]
je 0x4d6d24
mov ebx, dword [esi + edx*4 + 0x74c]
cmp ebx, 0x20000
mov edi, dword [esp + 0x58]
mov eax, ebx
sbb ecx, ecx
mov dword [esp + 0x50], ebx
and ecx, 0xfffffff6
add ecx, 0x10
shr eax, cl
movzx eax, byte [eax + esi + 0x2a98]
lea eax, [eax + ecx*2]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x4c]
add edi, 0x20
add dword [esp + 0x54], 0x100
add ecx, 4
inc ebp
jmp 0x4d6a93
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x1c]
inc ebp
mov dword [esp + 0x1c], ebp
cmp ebp, ebx
jne 0x4d60c2
jmp 0x4d6d9b
mov eax, dword [esp + 0x34]
mov dword [esi + 0x24], eax
mov dword [esi + 0x20], ecx
jmp 0x4d6d9b
mov edx, dword [esp + 0x1c]
lea eax, [ebp + 0x5d5]
shl eax, 5
inc edx
mov edi, dword [eax + esi]
cmp edx, ebx
ja 0x4d6d81
nop dword [eax + eax]
lea eax, [edx + 0x5d5]
shl eax, 5
mov ecx, dword [eax + esi]
cmp edi, ecx
mov eax, edx
cmovb eax, ebp
inc edx
cmp edi, ecx
mov ebp, eax
cmovb ecx, edi
mov edi, ecx
cmp edx, ebx
jbe 0x4d6d60
mov eax, ebp
sub eax, dword [esp + 0x1c]
je 0x4d6d97
add dword [esi + 0x34], eax
push eax
push dword [esi]
mov eax, dword [esi + 0x14]
call eax
add esp, 8
mov dword [esp + 0x1c], ebp
lea eax, [ebx + 0x5d5]
shl eax, 5
add eax, esi
nop word [eax + eax]
mov dword [eax], 0x40000000
lea eax, [eax - 0x20]
sub ebx, 1
jne 0x4d6db0
lea edi, [ebp + 1]
mov eax, edi
mov dword [esi + 0x1c], edi
shl eax, 5
lea edx, [eax + 0xbaa8]
lea ecx, [eax + 0xbaac]
add edx, esi
add ecx, esi
nop dword [eax]
mov eax, ebp
shl eax, 5
mov ebx, dword [eax + esi + 0xbaa8]
mov ebp, dword [eax + esi + 0xbaac]
movzx eax, word [eax + esi + 0xbaa6]
sub dword [esp + 0x1c], ebx
test eax, eax
je 0x4d6e3a
sub dword [esp + 0x1c], eax
sub edx, 0x20
dec edi
sub ecx, 0x20
mov dword [edx], ebx
mov ebx, eax
cmp eax, 1
jne 0x4d6e1e
mov dword [ecx], ebp
or ebp, 0xffffffff
jmp 0x4d6e3a
mov dword [ecx], 0
lea ebx, [eax - 1]
sub ecx, 0x20
dec edi
sub edx, 0x20
mov dword [ecx], 0xffffffff
mov dword [edx], 1
cmp dword [esp + 0x1c], 0
je 0x4d6e52
sub ecx, 0x20
dec edi
sub edx, 0x20
mov dword [ecx], ebp
mov dword [edx], ebx
mov ebp, dword [esp + 0x1c]
jmp 0x4d6de0
mov dword [esi + 0x18], edi
mov eax, ebx
pop edi
mov dword [esi + 0x90], ebp
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
pop edi
mov dword [esi + 0x90], 0xffffffff
mov eax, 1
pop esi
pop ebp
pop ebx
add esp, 0x88
ret