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

Disassembly:
sub esp, 0x88
push ebx
push ebp
push esi
mov esi, ecx
mov dword [esp + 0x44], edx
push edi
mov dword [esp + 0x50], esi
cmp dword [esi + 0x34], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
jne 0x550bab
lea edx, [esp + 0x34]
call fcn.00554350
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x34]
jmp 0x550bb5
mov eax, dword [esi + 0x20]
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0x24]
mov ebx, dword [esi + 0x28]
mov dword [esp + 0x2c], eax
cmp ebx, 2
jb 0x551e0c
mov ecx, dword [esi]
mov eax, 0x111
cmp ebx, eax
cmova ebx, eax
mov eax, dword [esi + 0xc]
call eax
mov dword [esp + 0x28], eax
lea edi, [esi + 0x38]
xor ecx, ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], ecx
xor esi, esi
lea edx, [eax - 1]
mov dword [esp + 0x10], ecx
mov al, byte [edx]
mov byte [esp + 0x1f], al
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], edx
nop
mov edi, dword [edi + ecx*4]
lea ebp, [ecx*4]
mov cl, byte [esp + 0x1f]
mov dword [esp + ebp + 0x64], edi
neg edi
cmp cl, byte [edi + edx]
mov ecx, dword [esp + 0x10]
jne 0x550c68
mov al, byte [eax]
cmp al, byte [edi + edx + 1]
jne 0x550c68
mov edx, 2
cmp ebx, edx
jbe 0x550c44
mov ecx, dword [esp + 0x28]
inc ecx
mov al, byte [ecx]
cmp al, byte [ecx + edi]
jne 0x550c40
inc edx
inc ecx
cmp edx, ebx
jb 0x550c33
mov ecx, dword [esp + 0x10]
mov dword [esp + ebp + 0x88], edx
cmp edx, dword [esp + esi + 0x88]
jbe 0x550c5a
mov dword [esp + 0x3c], ecx
mov esi, ebp
cmp edx, 0x111
je 0x550c89
mov edx, dword [esp + 0x38]
jmp 0x550c73
mov dword [esp + ebp + 0x88], 0
mov eax, dword [esp + 0x28]
inc ecx
mov edi, dword [esp + 0x34]
mov dword [esp + 0x10], ecx
cmp ecx, 4
jb 0x550c00
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x50]
mov edi, dword [esp + ecx*4 + 0x88]
mov eax, dword [esi + 0x30]
cmp edi, eax
jb 0x550cc2
mov dword [esi + 0x90], ecx
lea edx, [edi - 1]
lea ecx, [edi - 1]
add dword [esi + 0x34], ecx
mov ecx, dword [esi]
mov esi, dword [esi + 0x14]
call esi
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
mov ebp, dword [esp + 0x4c]
cmp ebp, eax
jb 0x550cfb
mov eax, dword [esp + 0x2c]
lea edx, [ebp - 1]
mov ecx, dword [esi]
mov eax, dword [esi + eax*4 + 0x95c]
add eax, 4
mov dword [esi + 0x90], eax
lea eax, [ebp - 1]
add dword [esi + 0x34], eax
mov eax, dword [esi + 0x14]
call eax
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x88
ret
mov ecx, dword [esp + 0x38]
mov eax, ecx
mov edx, dword [esp + 0x64]
sub eax, edx
cmp edi, ebp
mov dword [esp + 0x58], edx
mov bh, byte [ecx]
cmovbe edi, ebp
mov bl, byte [eax]
mov dword [esp + 0x20], edi
cmp edi, 2
jae 0x550d25
cmp bh, bl
jne 0x551e0c
mov ax, word [esi + 0x2c]
mov word [esi + 0xbcbc], ax
mov ebp, dword [esi + 0x4c]
mov eax, dword [esp + 0x48]
and ebp, eax
movzx edx, byte [ecx - 1]
mov ecx, dword [esi + 0x94]
mov edi, dword [esi + 0x2c]
shl eax, 8
add edx, eax
mov dword [esp + 0x10], ebp
and edx, dword [esi + 0x48]
mov eax, dword [esi + 0x50]
shl edx, cl
lea ecx, [edx + edx*2]
movzx edx, bh
lea ecx, [eax + ecx*2]
lea eax, [esi + 0x760]
push eax
cmp edi, 7
jb 0x550d77
movzx eax, bl
push eax
call fcn.00552610
jmp 0x550d7c
call fcn.005525d0
mov ecx, eax
mov eax, edi
shl eax, 4
add eax, ebp
mov dword [esp + 0x3c], eax
movzx eax, word [esi + eax*2 + 0x1eb0]
shr eax, 4
mov edx, dword [esi + eax*4 + 0x760]
xor eax, eax
mov word [esi + 0xbcde], ax
add edx, ecx
mov eax, dword [esp + 0x3c]
mov dword [esi + 0xbcd8], edx
mov dword [esi + 0xbce4], 0xffffffff
movzx eax, word [esi + eax*2 + 0x1eb0]
xor eax, 0x7f0
shr eax, 4
mov ecx, dword [esi + eax*4 + 0x760]
movzx eax, word [esi + edi*2 + 0x1e50]
xor eax, 0x7f0
mov dword [esp + 0x34], ecx
shr eax, 4
mov eax, dword [esi + eax*4 + 0x760]
add eax, ecx
mov dword [esp + 0x38], eax
cmp bl, bh
jne 0x550e62
cmp dword [esp + 0x88], 0
jne 0x550e62
mov eax, dword [esp + 0x3c]
movzx ecx, word [esi + edi*2 + 0x1e68]
shr ecx, 4
movzx eax, word [esi + eax*2 + 0x2030]
shr eax, 4
mov ecx, dword [esi + ecx*4 + 0x760]
add ecx, dword [esi + eax*4 + 0x760]
or eax, 0xffffffff
add ecx, dword [esp + 0x38]
cmp ecx, edx
jae 0x550e45
mov dword [esi + 0xbcd8], ecx
xor eax, eax
mov dword [esi + 0xbce4], 0
cmp dword [esp + 0x20], 2
jae 0x550e62
pop edi
mov dword [esi + 0x90], eax
mov eax, 1
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x6c]
mov dword [esi + 0xbce0], 1
mov dword [esi + 0xbcc8], eax
mov eax, dword [esp + 0x68]
mov dword [esi + 0xbccc], eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x70]
mov dword [esi + 0xbcd0], ebx
xor ebx, ebx
mov dword [esi + 0xbcd4], eax
nop word [eax + eax]
mov edx, dword [esp + ebx*4 + 0x88]
cmp edx, 2
jb 0x550f8e
mov eax, dword [esi + 0x2c]
movzx ecx, word [esi + eax*2 + 0x1e68]
test ebx, ebx
jne 0x550ee7
shl eax, 4
add eax, ebp
shr ecx, 4
movzx eax, word [esi + eax*2 + 0x2030]
xor eax, 0x7f0
shr eax, 4
mov ebp, dword [esi + eax*4 + 0x760]
add ebp, dword [esi + ecx*4 + 0x760]
jmp 0x550f43
movzx edi, word [esi + eax*2 + 0x1e80]
xor ecx, 0x7f0
shr ecx, 4
mov ebp, dword [esi + ecx*4 + 0x760]
cmp ebx, 1
jne 0x550f10
shr edi, 4
add ebp, dword [esi + edi*4 + 0x760]
jmp 0x550f43
movzx ecx, word [esi + eax*2 + 0x1e98]
xor edi, 0x7f0
mov eax, 2
shr ecx, 4
sub eax, ebx
shr edi, 4
shr eax, 4
and eax, 0x7f
xor ecx, eax
mov eax, dword [esi + ecx*4 + 0x760]
add eax, dword [esi + edi*4 + 0x760]
add ebp, eax
imul edi, dword [esp + 0x10], 0x110
mov ecx, edx
add ebp, dword [esp + 0x38]
shl ecx, 5
add ecx, 0xbcc4
add ecx, esi
add edi, 0x1e2c
add edi, edx
lea edi, [esi + edi*4]
mov eax, dword [edi]
add eax, ebp
cmp eax, dword [ecx - 0xc]
jae 0x550f7e
mov dword [ecx - 0xc], eax
xor eax, eax
mov dword [ecx - 4], edx
mov dword [ecx], ebx
mov word [ecx - 6], ax
dec edx
sub edi, 4
sub ecx, 0x20
cmp edx, 2
jae 0x550f67
mov ebp, dword [esp + 0x10]
inc ebx
cmp ebx, 4
jb 0x550ea0
mov edi, dword [esp + 0x88]
inc edi
cmp edi, dword [esp + 0x4c]
ja 0x5510c2
mov eax, dword [esi + 0x2c]
xor ebp, ebp
movzx eax, word [esi + eax*2 + 0x1e50]
shr eax, 4
mov eax, dword [esi + eax*4 + 0x760]
add dword [esp + 0x34], eax
cmp edi, 2
jae 0x550fcf
lea edi, [ebp + 2]
jmp 0x550fec
cmp edi, dword [esi + 0x960]
jbe 0x550fec
nop word [eax + eax]
add ebp, 2
cmp edi, dword [esi + ebp*4 + 0x960]
ja 0x550fe0
imul edx, dword [esp + 0x10], 0x110
mov ecx, edi
shl ecx, 5
add ecx, 0xbcc4
add ecx, esi
add edx, 0xd2b
add edx, edi
lea edx, [esi + edx*4]
mov ebx, dword [edx]
add ebx, dword [esp + 0x34]
mov eax, dword [esi + ebp*4 + 0x964]
mov dword [esp + 0x38], edx
lea edx, [edi - 2]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x3c], eax
cmp edi, 5
jb 0x551032
mov edx, 3
cmp eax, 0x80
jae 0x55104e
shl edx, 7
and eax, 0x7f
add edx, eax
add ebx, dword [esi + edx*4 + 0x1630]
mov edx, dword [esp + 0x3c]
jmp 0x55108a
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 + 0x2cb0]
lea eax, [eax + edx*2]
mov edx, dword [esp + 0x3c]
mov eax, dword [esi + eax*4 + 0x1230]
mov ecx, edx
and ecx, 0xf
add eax, dword [esi + ecx*4 + 0x11f0]
mov ecx, dword [esp + 0x44]
add ebx, eax
cmp ebx, dword [ecx - 0xc]
jae 0x5510a0
lea eax, [edx + 4]
mov dword [ecx - 0xc], ebx
mov dword [ecx], eax
xor eax, eax
mov dword [ecx - 4], edi
mov word [ecx - 6], ax
cmp edi, dword [esi + ebp*4 + 0x960]
jne 0x5510b2
add ebp, 2
cmp ebp, dword [esp + 0x2c]
je 0x5510c2
mov edx, dword [esp + 0x38]
inc edi
add edx, 4
add ecx, 0x20
jmp 0x55100c
mov ebp, dword [esp + 0x20]
mov ebx, 1
mov dword [esp + 0x18], ebx
cmp ebp, ebx
je 0x551d3b
nop word [eax + eax]
cmp ebx, 0x7c0
jae 0x551ceb
lea edx, [esp + 0x3c]
mov ecx, esi
call fcn.00554350
mov ecx, eax
mov dword [esp + 0x80], ecx
cmp ecx, dword [esi + 0x30]
jae 0x551cdf
inc dword [esp + 0x48]
mov edi, ebx
shl edi, 5
mov edx, ebx
add edi, 0xbcb8
add edi, esi
sub edx, dword [edi + 8]
cmp dword [edi + 8], 1
jne 0x55115b
mov ebx, dword [esp + 0x58]
mov eax, 0x58e180
shl edx, 5
cmp dword [edi + 0xc], 0
movzx ecx, word [edx + esi + 0xbcbc]
mov edx, 0x58e1a4
cmove eax, edx
mov edx, dword [esp + 0x54]
movzx ebp, byte [eax + ecx]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x30], ebp
jmp 0x5511cb
movzx ebx, word [edi + 6]
mov ecx, dword [edi + 0xc]
test bx, bx
je 0x551273
sub edx, ebx
mov ebp, 8
mov dword [esp + 0x30], ebp
cmp ebx, 1
jne 0x551189
cmp ecx, 4
sbb ebp, ebp
neg ebp
add ebp, 7
mov dword [esp + 0x30], ebp
shl edx, 5
lea eax, [esi + 0xbcb8]
add eax, edx
mov dword [esp + 0x74], ebp
mov ebx, dword [eax + 0x10]
mov dword [esp + 0x54], ebx
cmp ecx, 4
jb 0x5512a2
mov edx, ebx
lea ebx, [ecx - 3]
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x68], edx
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x64], ebx
mov word [edi + 4], bp
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], edx
mov dword [edi + 0x18], ecx
mov dword [edi + 0x1c], eax
mov ecx, dword [esi]
mov eax, dword [esi + 0xc]
call eax
mov bh, byte [eax - 1]
mov ecx, dword [esi + 0x4c]
and ecx, dword [esp + 0x48]
mov dword [esp + 0x44], eax
dec eax
mov dword [esp + 0x14], eax
sub eax, dword [esp + 0x58]
mov dword [esp + 0x4c], ecx
mov byte [esp + 0x1f], bh
mov bl, byte [eax]
mov eax, ebp
shl eax, 4
add eax, ecx
mov byte [esp + 0x43], bl
movzx ecx, word [esi + eax*2 + 0x1eb0]
mov eax, ecx
shr ecx, 4
xor eax, 0x7f0
shr eax, 4
mov ebp, dword [esi + ecx*4 + 0x760]
add ebp, dword [edi]
mov eax, dword [esi + eax*4 + 0x760]
add eax, dword [edi]
mov edi, dword [esp + 0x18]
shl edi, 5
add edi, 0xbcd8
mov dword [esp + 0x34], eax
add edi, esi
xor eax, eax
mov dword [esp + 0x10], edi
mov dword [esp + 0x24], eax
mov edx, dword [edi]
cmp edx, 0x40000000
jae 0x551260
cmp bl, bh
je 0x551268
cmp ebp, edx
jbe 0x551309
xor ebp, ebp
mov dword [esp + 0x28], ebp
jmp 0x5513bc
mov eax, edx
shl edx, 5
shl eax, 5
movzx eax, word [eax + esi + 0xbcbc]
cmp ecx, 4
jae 0x5512ee
movzx ebp, byte [eax + 0x58e198]
lea eax, [esi + 0xbcb8]
add eax, edx
mov dword [esp + 0x30], ebp
mov ebx, dword [eax + 0x10]
mov dword [esp + 0x54], ebx
mov edx, dword [eax + 0x14]
test ecx, ecx
jne 0x5512b4
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
jmp 0x5511b3
mov dword [esp + 0x68], ebx
mov ebx, edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x58], ebx
cmp ecx, 1
jne 0x5512d2
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
jmp 0x5511bf
mov dword [esp + 0x6c], ebx
mov ebx, dword [eax + ecx*4 + 0x10]
xor ecx, 1
mov dword [esp + 0x58], ebx
mov eax, dword [eax + ecx*4 + 0x10]
mov ecx, dword [esp + 0x6c]
jmp 0x5511c3
movzx ebp, 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]
lea eax, [esi + 0xbcb8]
add eax, edx
mov dword [esp + 0x30], ebp
mov edx, dword [eax + 0x10]
jmp 0x5511aa
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 0x94]
movzx edx, byte [eax - 1]
mov eax, dword [esp + 0x48]
shl eax, 8
add edx, eax
mov eax, dword [esi + 0x50]
and edx, dword [esi + 0x48]
shl edx, cl
cmp dword [esp + 0x30], 7
lea ecx, [edx + edx*2]
movzx edx, bh
lea ecx, [eax + ecx*2]
mov dword [esp + 0x50], ecx
jb 0x551350
lea eax, [esi + 0x760]
push eax
movzx eax, bl
push eax
call fcn.00552610
mov ebx, eax
jmp 0x551388
mov edi, dword [esp + 0x50]
xor ebx, ebx
or edx, 0x100
nop dword [eax]
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 ebx, dword [esi + eax*4 + 0x760]
cmp edx, 2
jae 0x551360
mov edi, dword [esp + 0x10]
mov edx, dword [edi]
add ebp, ebx
mov bl, byte [esp + 0x43]
mov bh, byte [esp + 0x1f]
mov dword [esp + 0x28], ebp
cmp ebp, edx
jae 0x5513bc
xor eax, eax
mov dword [edi], ebp
mov dword [edi + 8], 1
mov edx, ebp
mov dword [edi + 0xc], 0xffffffff
mov word [edi + 6], ax
mov dword [esp + 0x24], 1
mov ecx, dword [esp + 0x30]
mov edi, 0x7ff
sub edi, dword [esp + 0x18]
movzx eax, word [esi + ecx*2 + 0x1e50]
xor eax, 0x7f0
shr eax, 4
mov eax, dword [esi + eax*4 + 0x760]
add eax, dword [esp + 0x34]
cmp dword [esi + 0x28], edi
mov dword [esp + 0x5c], eax
cmovbe edi, dword [esi + 0x28]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x10]
cmp ecx, 7
jae 0x551461
cmp bl, bh
jne 0x551461
cmp eax, edx
jae 0x551461
cmp dword [edi + 8], 2
jb 0x551410
cmp dword [edi + 0xc], 0
je 0x551461
mov eax, ecx
shl eax, 4
add eax, dword [esp + 0x4c]
movzx ecx, word [esi + eax*2 + 0x2030]
mov eax, dword [esp + 0x30]
shr ecx, 4
movzx eax, word [esi + eax*2 + 0x1e68]
mov ecx, dword [esi + ecx*4 + 0x760]
shr eax, 4
add ecx, dword [esi + eax*4 + 0x760]
add ecx, dword [esp + 0x5c]
cmp ecx, edx
jae 0x551461
xor eax, eax
mov dword [edi], ecx
mov dword [edi + 8], 1
mov dword [edi + 0xc], 0
mov word [edi + 6], ax
jmp 0x551465
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
cmp ecx, 2
jb 0x551cc8
mov edi, dword [esi + 0x30]
cmp ecx, edi
mov edx, edi
cmovbe edx, ecx
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x14]
test eax, eax
jne 0x5515c8
test ebp, ebp
je 0x5515c8
cmp bl, bh
je 0x5515c8
cmp ecx, 2
jbe 0x5515c8
mov eax, dword [esp + 0x44]
mov ebx, edx
sub ebx, dword [esp + 0x58]
mov al, byte [eax]
cmp al, byte [ebx + 1]
jne 0x5515c8
mov al, byte [edx + 2]
cmp al, byte [ebx + 2]
jne 0x5515c8
inc edi
mov edx, 3
cmp edi, ecx
mov dword [esp + 0x10], edx
cmova edi, ecx
cmp edi, edx
jbe 0x5514f3
mov ebp, dword [esp + 0x14]
lea ecx, [ebx + 3]
sub ebp, ebx
mov al, byte [ecx + ebp]
cmp al, byte [ecx]
jne 0x5514ef
inc edx
inc ecx
cmp edx, edi
jb 0x5514e2
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x30]
mov ebp, dword [esp + 0x48]
inc ebp
and ebp, dword [esi + 0x4c]
movzx edi, byte [eax + 0x58e180]
mov edx, edi
shl edx, 4
add edx, ebp
movzx ecx, word [esi + edi*2 + 0x1e50]
xor ecx, 0x7f0
shr ecx, 4
movzx eax, word [esi + edx*2 + 0x2030]
xor eax, 0x7f0
shr eax, 4
mov ebx, dword [esi + ecx*4 + 0x760]
mov ecx, dword [esp + 0x18]
add ebx, dword [esi + eax*4 + 0x760]
movzx eax, word [esi + edx*2 + 0x1eb0]
mov edx, dword [esp + 0x10]
xor eax, 0x7f0
shr eax, 4
add ecx, edx
add ebx, dword [esi + eax*4 + 0x760]
movzx eax, word [esi + edi*2 + 0x1e68]
shr eax, 4
add ebx, dword [esi + eax*4 + 0x760]
add ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
cmp eax, ecx
cmovb eax, ecx
dec edx
mov dword [esp + 0x20], eax
imul eax, ebp, 0x110
shl ecx, 5
add eax, edx
mov eax, dword [esi + eax*4 + 0x78b0]
add eax, ebx
cmp eax, dword [ecx + esi + 0xbcb8]
jae 0x5515c4
mov dword [ecx + esi + 0xbcb8], eax
mov eax, 1
mov dword [ecx + esi + 0xbcc0], edx
mov dword [ecx + esi + 0xbcc4], 0
mov word [ecx + esi + 0xbcbe], ax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
shl eax, 4
add eax, dword [esp + 0x4c]
mov dword [esp + 0x24], 0
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x10], 2
mov dword [esp + 0x84], eax
nop
mov ebx, dword [esp + ecx*4 + 0x64]
mov ebp, edx
mov al, byte [edx]
sub ebp, ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x60], ebp
cmp al, byte [ebp]
jne 0x551916
mov eax, dword [esp + 0x44]
mov al, byte [eax]
cmp al, byte [ebp + 1]
jne 0x551916
mov edi, dword [esp + 0x50]
mov edx, 2
mov dword [esp + 0x28], edx
cmp edi, edx
jbe 0x551641
lea ecx, [ebp + 2]
nop
mov al, byte [ebx + ecx]
cmp al, byte [ecx]
jne 0x55163d
inc edx
inc ecx
cmp edx, edi
jb 0x551630
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x18]
mov edi, edx
mov ecx, dword [esp + 0x20]
add eax, edx
cmp ecx, eax
mov dword [esp + 0x78], eax
cmovb ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x20], ecx
movzx ecx, word [esi + eax*2 + 0x1e68]
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x551698
mov eax, dword [esp + 0x84]
shr ecx, 4
movzx eax, word [esi + eax*2 + 0x2030]
xor eax, 0x7f0
shr eax, 4
mov ebp, dword [esi + eax*4 + 0x760]
add ebp, dword [esi + ecx*4 + 0x760]
jmp 0x5516fa
xor ecx, 0x7f0
shr ecx, 4
mov ebp, dword [esi + ecx*4 + 0x760]
mov ecx, dword [esp + 0x30]
movzx ebx, word [esi + ecx*2 + 0x1e80]
cmp eax, 1
jne 0x5516c5
shr ebx, 4
add ebp, dword [esi + ebx*4 + 0x760]
jmp 0x5516fa
movzx ecx, word [esi + ecx*2 + 0x1e98]
mov eax, 2
sub eax, dword [esp + 0x24]
xor ebx, 0x7f0
shr eax, 4
and eax, 0x7f
shr ecx, 4
xor ecx, eax
shr ebx, 4
mov eax, dword [esi + ecx*4 + 0x760]
add eax, dword [esi + ebx*4 + 0x760]
add ebp, eax
imul eax, dword [esp + 0x4c], 0x110
add ebp, dword [esp + 0x5c]
mov dword [esp + 0x2c], ebp
add eax, 0x1e2c
add eax, edx
mov edx, dword [esp + 0x24]
lea ebx, [esi + eax*4]
mov eax, dword [esp + 0x78]
shl eax, 5
add eax, 0xbcc4
add eax, esi
mov ecx, dword [ebx]
add ecx, ebp
cmp ecx, dword [eax - 0xc]
jae 0x55173d
mov dword [eax - 0xc], ecx
xor ecx, ecx
mov dword [eax - 4], edi
mov dword [eax], edx
mov word [eax - 6], cx
dec edi
sub ebx, 4
sub eax, 0x20
cmp edi, 2
jae 0x551726
test edx, edx
mov edx, dword [esp + 0x28]
jne 0x551758
lea edi, [edx + 1]
mov dword [esp + 0x10], edi
mov eax, dword [esi + 0x30]
lea ebp, [edx + 1]
add eax, ebp
cmp eax, dword [esp + 0x38]
cmova eax, dword [esp + 0x38]
add ebp, 2
mov dword [esp + 0x78], eax
cmp ebp, eax
ja 0x55190e
mov ecx, dword [esp + 0x60]
mov ebx, dword [esp + 0x14]
add ecx, ebp
mov dword [esp + 0x7c], ecx
mov al, byte [ebx + ebp - 2]
cmp al, byte [ecx - 2]
jne 0x55190e
mov al, byte [ebx + ebp - 1]
cmp al, byte [ecx - 1]
jne 0x55190e
mov ecx, dword [esp + 0x48]
lea eax, [esi + 0x760]
push eax
mov eax, dword [esp + 0x64]
add ecx, edx
mov edi, ecx
shl ecx, 8
and edi, dword [esi + 0x4c]
movzx eax, byte [edx + eax]
push eax
mov eax, ebx
mov ebx, dword [esp + 0x4c]
movzx edx, byte [edx + eax]
mov eax, dword [esp + 0x30]
movzx eax, byte [eax + ebx - 2]
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 ecx, [eax + ecx*2]
call fcn.00552610
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
movzx ecx, byte [ecx + 0x58e198]
shl ecx, 4
add ecx, edi
movzx ecx, word [esi + ecx*2 + 0x1eb0]
shr ecx, 4
add eax, dword [esi + ecx*4 + 0x760]
imul ecx, dword [esp + 0x4c], 0x110
add ecx, edx
add eax, dword [esi + ecx*4 + 0x78b0]
add dword [esp + 0x2c], eax
lea eax, [edi + 1]
and eax, dword [esi + 0x4c]
mov dword [esp + 0x60], eax
mov edi, dword [esp + 0x78]
movzx ecx, word [esi + eax*2 + 0x20d0]
movzx eax, word [esi + eax*2 + 0x1f50]
xor ecx, 0x7f0
xor eax, 0x7f0
shr ecx, 4
shr eax, 4
mov ecx, dword [esi + ecx*4 + 0x760]
add ecx, dword [esi + eax*4 + 0x760]
movzx eax, word [esi + 0x1e5a]
xor eax, 0x7f0
shr eax, 4
add ecx, dword [esi + eax*4 + 0x760]
movzx eax, word [esi + 0x1e72]
shr eax, 4
add ecx, dword [esi + eax*4 + 0x760]
add dword [esp + 0x2c], ecx
cmp ebp, edi
jae 0x5518ad
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x74]
nop dword [eax + eax]
mov al, byte [ecx + ebx]
cmp al, byte [ecx]
jne 0x5518ad
inc ebp
inc ecx
cmp ebp, edi
jb 0x5518a0
mov ecx, dword [esp + 0x18]
mov eax, ebp
mov ebx, dword [esp + 0x20]
add ecx, eax
sub ebp, edx
cmp ebx, ecx
cmovb ebx, ecx
imul eax, dword [esp + 0x60], 0x110
dec ebp
shl ecx, 5
mov dword [esp + 0x20], ebx
add eax, ebp
lea edi, [ecx + esi]
mov ecx, dword [esp + 0x24]
mov eax, dword [esi + eax*4 + 0x78b0]
add eax, dword [esp + 0x2c]
cmp eax, dword [edi + 0xbcb8]
jae 0x551908
mov dword [edi + 0xbcb8], eax
lea eax, [edx + 1]
mov dword [edi + 0xbcc0], ebp
mov word [edi + 0xbcbe], ax
mov dword [edi + 0xbcc4], ecx
mov edx, dword [esp + 0x14]
jmp 0x55191a
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
inc ecx
mov dword [esp + 0x24], ecx
cmp ecx, 4
jb 0x5515f0
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 0x80]
cmp edi, edx
jbe 0x55196c
xor eax, eax
xor ecx, ecx
mov edi, edx
cmp edx, dword [esi + 0x960]
jbe 0x55195e
nop word [eax + eax]
add eax, 2
mov ecx, eax
cmp edx, dword [esi + ecx*4 + 0x960]
ja 0x551950
add eax, 2
mov dword [esi + ecx*4 + 0x960], edx
mov dword [esp + 0x3c], eax
cmp edi, dword [esp + 0x10]
jb 0x551cc8
mov eax, dword [esp + 0x30]
movzx eax, word [esi + eax*2 + 0x1e50]
shr eax, 4
mov edx, dword [esi + eax*4 + 0x760]
mov eax, dword [esp + 0x18]
add edx, dword [esp + 0x34]
add eax, edi
cmp ebx, eax
mov dword [esp + 0x7c], edx
cmovb ebx, eax
xor edi, edi
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x28], edi
cmp ebx, dword [esi + 0x960]
jbe 0x5519d0
nop word [eax + eax]
add edi, 2
cmp ebx, dword [esi + edi*4 + 0x960]
ja 0x5519c0
mov dword [esp + 0x28], edi
mov ebp, dword [esi + edi*4 + 0x964]
cmp ebp, 0x20000
mov eax, ebp
mov edi, dword [esp + 0x28]
sbb ecx, ecx
mov dword [esp + 0x34], ebp
and ecx, 0xfffffff6
add ecx, 0x10
shr eax, cl
movzx eax, byte [eax + esi + 0x2cb0]
lea eax, [eax + ecx*2]
mov dword [esp + 0x50], eax
lea ecx, [ebx + 3]
mov eax, dword [esp + 0x48]
add eax, ebx
add ebx, 0xd2b
shl eax, 8
mov dword [esp + 0x5c], eax
imul eax, dword [esp + 0x4c], 0x110
add eax, ebx
lea ebx, [esi + eax*4]
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x18]
shl eax, 5
add eax, 0xbcc4
add eax, esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], ebx
lea eax, [ecx - 5]
mov ebx, dword [ebx]
add ebx, edx
mov dword [esp + 0x2c], ecx
mov edx, 3
cmp eax, edx
cmovb edx, eax
cmp ebp, 0x80
jae 0x551a6d
mov eax, ebp
shl edx, 7
and eax, 0x7f
add edx, eax
add ebx, dword [esi + edx*4 + 0x1630]
jmp 0x551a8d
shl edx, 6
mov ecx, ebp
add edx, dword [esp + 0x50]
and ecx, 0xf
mov eax, dword [esi + edx*4 + 0x1230]
add eax, dword [esi + ecx*4 + 0x11f0]
mov ecx, dword [esp + 0x2c]
add ebx, eax
mov edx, dword [esp + 0x44]
mov dword [esp + 0x10], ebx
cmp ebx, dword [edx - 0xc]
jae 0x551aae
lea eax, [ecx - 3]
mov dword [edx - 0xc], ebx
mov dword [edx - 4], eax
lea eax, [ebp + 4]
mov dword [edx], eax
xor eax, eax
mov word [edx - 6], ax
lea eax, [ecx - 3]
cmp eax, dword [esi + edi*4 + 0x960]
jne 0x551ca8
mov edi, dword [esi + 0x30]
mov edx, ecx
mov ebx, dword [esp + 0x14]
add edi, 0xfffffffe
sub ebx, ebp
add edi, ecx
dec ebx
cmp edi, dword [esp + 0x38]
mov dword [esp + 0x80], ebx
cmova edi, dword [esp + 0x38]
cmp ecx, edi
ja 0x551c63
mov ebp, dword [esp + 0x14]
mov al, byte [ebp + ecx - 2]
cmp al, byte [ebx + ecx - 2]
jne 0x551c63
mov al, byte [ebp + ecx - 1]
cmp al, byte [ebx + ecx - 1]
jne 0x551c63
cmp ecx, edi
jae 0x551b21
add ecx, ebp
sub ebx, ebp
nop
mov al, byte [ecx]
cmp al, byte [ebx + ecx]
jne 0x551b1d
inc edx
inc ecx
cmp edx, edi
jb 0x551b10
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x48]
mov eax, 3
sub eax, ecx
mov ebp, edx
add edx, eax
add edi, 0xfffffffd
lea eax, [esi + 0x760]
mov dword [esp + 0x74], edx
push eax
mov eax, dword [esp + 0x84]
add edi, ecx
and edi, dword [esi + 0x4c]
movzx eax, byte [eax + ecx - 3]
push eax
mov eax, dword [esp + 0x1c]
movzx edx, byte [eax + ecx - 3]
movzx eax, byte [eax + ecx - 4]
add eax, dword [esp + 0x64]
and eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x94]
shl eax, cl
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x50]
lea ecx, [eax + ecx*2]
call fcn.00552610
mov ecx, dword [esp + 0x30]
lea edx, [edi + 1]
and edx, dword [esi + 0x4c]
movzx ecx, byte [ecx + 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 + 0x74]
movzx ecx, word [esi + ecx*2 + 0x1eb0]
shr ecx, 4
add eax, dword [esi + ecx*4 + 0x760]
add dword [esp + 0x10], eax
movzx ecx, word [esi + edx*2 + 0x20b0]
movzx eax, word [esi + edx*2 + 0x1f30]
xor ecx, 0x7f0
xor eax, 0x7f0
shr ecx, 4
shr eax, 4
mov ebx, dword [esp + 0x10]
mov ecx, dword [esi + ecx*4 + 0x760]
add ecx, dword [esi + eax*4 + 0x760]
movzx eax, word [esi + 0x1e58]
xor eax, 0x7f0
shr eax, 4
add ecx, dword [esi + eax*4 + 0x760]
movzx eax, word [esi + 0x1e70]
shr eax, 4
add ecx, dword [esi + eax*4 + 0x760]
mov eax, dword [esp + 0x20]
add ebx, ecx
mov ecx, dword [esp + 0x18]
add ecx, ebp
cmp eax, ecx
cmovb eax, ecx
dec edi
mov dword [esp + 0x20], eax
imul eax, edx, 0x110
shl ecx, 5
add eax, edi
mov eax, dword [esi + eax*4 + 0x78b0]
add eax, ebx
cmp eax, dword [ecx + esi + 0xbcb8]
jae 0x551c63
mov dword [ecx + esi + 0xbcb8], eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffffe
mov dword [ecx + esi + 0xbcc0], edi
mov word [ecx + esi + 0xbcbe], ax
mov eax, dword [esp + 0x34]
add eax, 4
mov dword [ecx + esi + 0xbcc4], eax
mov edi, dword [esp + 0x28]
add edi, 2
mov dword [esp + 0x28], edi
cmp edi, dword [esp + 0x3c]
je 0x551cc8
mov ebp, dword [esi + edi*4 + 0x964]
cmp ebp, 0x20000
mov edx, dword [esp + 0x44]
mov eax, ebp
sbb ecx, ecx
mov dword [esp + 0x34], ebp
and ecx, 0xfffffff6
add ecx, 0x10
shr eax, cl
movzx eax, byte [eax + esi + 0x2cb0]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x50], eax
mov ebx, dword [esp + 0x60]
add edx, 0x20
add dword [esp + 0x5c], 0x100
add ebx, 4
mov dword [esp + 0x44], edx
inc ecx
mov edx, dword [esp + 0x7c]
jmp 0x551a39
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x20]
inc ebx
mov dword [esp + 0x18], ebx
cmp ebx, ebp
jne 0x5510e0
jmp 0x551d3b
mov eax, dword [esp + 0x3c]
mov dword [esi + 0x24], eax
mov dword [esi + 0x20], ecx
jmp 0x551d3b
mov eax, ebx
shl eax, 5
mov edi, dword [eax + esi + 0xbcb8]
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
cmp edx, ebp
ja 0x551d27
mov eax, edx
shl eax, 5
mov ecx, dword [eax + esi + 0xbcb8]
cmp edi, ecx
mov eax, edx
cmovb eax, ebx
inc edx
cmp edi, ecx
mov ebx, eax
cmovb ecx, edi
mov edi, ecx
cmp edx, ebp
jbe 0x551d02
mov eax, dword [esp + 0x18]
mov edx, ebx
sub edx, eax
je 0x551d37
mov ecx, dword [esi]
mov eax, dword [esi + 0x14]
add dword [esi + 0x34], edx
call eax
mov dword [esp + 0x18], ebx
mov eax, ebp
shl eax, 5
add eax, 0xbcb8
add eax, esi
nop word [eax + eax]
mov dword [eax], 0x40000000
lea eax, [eax - 0x20]
sub ebp, 1
jne 0x551d50
inc ebx
mov edx, ebx
mov dword [esi + 0x1c], ebx
shl edx, 5
add edx, 0xbcc4
lea edi, [ebx + 0x5e6]
shl edi, 5
add edi, esi
add edx, esi
nop word [eax + eax]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
add eax, 0x5e6
shl ecx, 5
shl eax, 5
mov ebp, dword [ecx + esi + 0xbcc4]
mov eax, dword [eax + esi]
movzx ecx, word [ecx + esi + 0xbcbe]
sub dword [esp + 0x18], eax
test ecx, ecx
je 0x551de4
sub dword [esp + 0x18], ecx
sub edi, 0x20
dec ebx
sub edx, 0x20
mov dword [edi], eax
mov eax, ecx
cmp ecx, 1
jne 0x551dc8
mov dword [edx], ebp
or ebp, 0xffffffff
jmp 0x551de4
mov dword [edx], 0
lea eax, [ecx - 1]
sub edx, 0x20
dec ebx
sub edi, 0x20
mov dword [edx], 0xffffffff
mov dword [edi], 1
cmp dword [esp + 0x18], 0
je 0x551df8
sub edx, 0x20
dec ebx
sub edi, 0x20
mov dword [edx], ebp
mov dword [edi], eax
jmp 0x551d80
pop edi
mov dword [esi + 0x90], ebp
mov dword [esi + 0x18], ebx
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