Function at 0x550580
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x88
push ebx
push ebp
push esi
mov esi, ecx
mov dword [esp + 0x44], edx
push edi
mov dword [esp + 0x40], esi
cmp dword [esi + 0x34], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
jne 0x5505bb
lea edx, [esp + 0x34]
call fcn.00553cf0
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x34]
jmp 0x5505c5
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 0x55181c
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 + 0x38], 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 + 0x50], 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 0x550678
mov al, byte [eax]
cmp al, byte [edi + edx + 1]
jne 0x550678
mov edx, 2
cmp ebx, edx
jbe 0x550654
mov ecx, dword [esp + 0x28]
inc ecx
mov al, byte [ecx]
cmp al, byte [ecx + edi]
jne 0x550650
inc edx
inc ecx
cmp edx, ebx
jb 0x550643
mov ecx, dword [esp + 0x10]
mov dword [esp + ebp + 0x88], edx
cmp edx, dword [esp + esi + 0x88]
jbe 0x55066a
mov dword [esp + 0x38], ecx
mov esi, ebp
cmp edx, 0x111
je 0x550699
mov edx, dword [esp + 0x50]
jmp 0x550683
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 0x550610
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + ecx*4 + 0x88]
mov eax, dword [esi + 0x30]
cmp edi, eax
jb 0x5506d2
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 0x55070b
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 + 0x50]
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 0x550735
cmp bh, bl
jne 0x55181c
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 0x550787
movzx eax, bl
push eax
call fcn.00552020
jmp 0x55078c
call fcn.00551fe0
mov ecx, eax
mov edx, edi
shl edx, 4
add edx, ebp
movzx eax, word [esi + edx*2 + 0x1eb0]
shr eax, 4
mov eax, dword [esi + eax*4 + 0x760]
add eax, ecx
mov dword [esi + 0xbce4], 0xffffffff
mov dword [esi + 0xbcd8], eax
mov dword [esp + 0x34], eax
xor eax, eax
mov word [esi + 0xbcde], ax
movzx eax, word [esi + edx*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 + 0x40], ecx
shr eax, 4
mov eax, dword [esi + eax*4 + 0x760]
add eax, ecx
mov dword [esp + 0x38], eax
cmp bl, bh
jne 0x55086c
cmp dword [esp + 0x88], 0
jne 0x55086c
movzx ecx, word [esi + edi*2 + 0x1e68]
movzx eax, word [esi + edx*2 + 0x2030]
shr ecx, 4
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, dword [esp + 0x34]
jae 0x55084f
mov dword [esi + 0xbcd8], ecx
xor eax, eax
mov dword [esi + 0xbce4], 0
cmp dword [esp + 0x20], 2
jae 0x55086c
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 dword [eax]
nop dword [eax + eax]
mov edx, dword [esp + ebx*4 + 0x88]
cmp edx, 2
jb 0x55099e
mov eax, dword [esi + 0x2c]
movzx ecx, word [esi + eax*2 + 0x1e68]
test ebx, ebx
jne 0x5508f7
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 0x550953
movzx edi, word [esi + eax*2 + 0x1e80]
xor ecx, 0x7f0
shr ecx, 4
mov ebp, dword [esi + ecx*4 + 0x760]
cmp ebx, 1
jne 0x550920
shr edi, 4
add ebp, dword [esi + edi*4 + 0x760]
jmp 0x550953
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 0x55098e
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 0x550977
mov ebp, dword [esp + 0x10]
inc ebx
cmp ebx, 4
jb 0x5508b0
mov edi, dword [esp + 0x88]
inc edi
cmp edi, dword [esp + 0x4c]
ja 0x550ad2
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 eax, dword [esp + 0x40]
mov dword [esp + 0x34], eax
cmp edi, 2
jae 0x5509e3
lea edi, [ebp + 2]
jmp 0x5509fc
cmp edi, dword [esi + 0x960]
jbe 0x5509fc
nop dword [eax + eax]
add ebp, 2
cmp edi, dword [esi + ebp*4 + 0x960]
ja 0x5509f0
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 + 0x50], edx
lea edx, [edi - 2]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x38], eax
cmp edi, 5
jb 0x550a42
mov edx, 3
cmp eax, 0x80
jae 0x550a5e
shl edx, 7
and eax, 0x7f
add edx, eax
add ebx, dword [esi + edx*4 + 0x1630]
mov edx, dword [esp + 0x38]
jmp 0x550a9a
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 + 0x38]
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 0x550ab0
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 0x550ac2
add ebp, 2
cmp ebp, dword [esp + 0x2c]
je 0x550ad2
mov edx, dword [esp + 0x50]
inc edi
add edx, 4
add ecx, 0x20
jmp 0x550a1c
mov ebp, dword [esp + 0x20]
mov ebx, 1
mov dword [esp + 0x18], ebx
cmp ebp, ebx
je 0x55174b
nop word [eax + eax]
cmp ebx, 0x7c0
jae 0x5516fb
lea edx, [esp + 0x38]
mov ecx, esi
call fcn.00553cf0
mov ecx, eax
mov dword [esp + 0x80], ecx
cmp ecx, dword [esi + 0x30]
jae 0x5516ef
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 0x550b6b
mov ebx, dword [esp + 0x58]
mov eax, 0x58d0c0
shl edx, 5
cmp dword [edi + 0xc], 0
movzx ecx, word [edx + esi + 0xbcbc]
mov edx, 0x58d0e4
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 0x550bdb
movzx ebx, word [edi + 6]
mov ecx, dword [edi + 0xc]
test bx, bx
je 0x550c83
sub edx, ebx
mov ebp, 8
mov dword [esp + 0x30], ebp
cmp ebx, 1
jne 0x550b99
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 0x550cb2
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 + 0x3f], 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 0x550c70
cmp bl, bh
je 0x550c78
cmp ebp, edx
jbe 0x550d19
xor ebp, ebp
mov dword [esp + 0x28], ebp
jmp 0x550dcc
mov eax, edx
shl edx, 5
shl eax, 5
movzx eax, word [eax + esi + 0xbcbc]
cmp ecx, 4
jae 0x550cfe
movzx ebp, byte [eax + 0x58d0d8]
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 0x550cc4
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
jmp 0x550bc3
mov dword [esp + 0x68], ebx
mov ebx, edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x58], ebx
cmp ecx, 1
jne 0x550ce2
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
jmp 0x550bcf
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 0x550bd3
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 0x550bba
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 + 0x40], ecx
jb 0x550d60
lea eax, [esi + 0x760]
push eax
movzx eax, bl
push eax
call fcn.00552020
mov ebx, eax
jmp 0x550d98
mov edi, dword [esp + 0x40]
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 0x550d70
mov edi, dword [esp + 0x10]
mov edx, dword [edi]
add ebp, ebx
mov bl, byte [esp + 0x3f]
mov bh, byte [esp + 0x1f]
mov dword [esp + 0x28], ebp
cmp ebp, edx
jae 0x550dcc
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 + 0x50], edi
mov edi, dword [esp + 0x10]
cmp ecx, 7
jae 0x550e71
cmp bl, bh
jne 0x550e71
cmp eax, edx
jae 0x550e71
cmp dword [edi + 8], 2
jb 0x550e20
cmp dword [edi + 0xc], 0
je 0x550e71
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 0x550e71
xor eax, eax
mov dword [edi], ecx
mov dword [edi + 8], 1
mov dword [edi + 0xc], 0
mov word [edi + 6], ax
jmp 0x550e75
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x50]
cmp ecx, 2
jb 0x5516d8
mov edi, dword [esi + 0x30]
cmp ecx, edi
mov edx, edi
cmovbe edx, ecx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x14]
test eax, eax
jne 0x550fd8
test ebp, ebp
je 0x550fd8
cmp bl, bh
je 0x550fd8
cmp ecx, 2
jbe 0x550fd8
mov eax, dword [esp + 0x44]
mov ebx, edx
sub ebx, dword [esp + 0x58]
mov al, byte [eax]
cmp al, byte [ebx + 1]
jne 0x550fd8
mov al, byte [edx + 2]
cmp al, byte [ebx + 2]
jne 0x550fd8
inc edi
mov edx, 3
cmp edi, ecx
mov dword [esp + 0x10], edx
cmova edi, ecx
cmp edi, edx
jbe 0x550f03
mov ebp, dword [esp + 0x14]
lea ecx, [ebx + 3]
sub ebp, ebx
mov al, byte [ecx + ebp]
cmp al, byte [ecx]
jne 0x550eff
inc edx
inc ecx
cmp edx, edi
jb 0x550ef2
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 + 0x58d0c0]
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 0x550fd4
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 0x551326
mov eax, dword [esp + 0x44]
mov al, byte [eax]
cmp al, byte [ebp + 1]
jne 0x551326
mov edi, dword [esp + 0x40]
mov edx, 2
mov dword [esp + 0x28], edx
cmp edi, edx
jbe 0x551051
lea ecx, [ebp + 2]
nop
mov al, byte [ebx + ecx]
cmp al, byte [ecx]
jne 0x55104d
inc edx
inc ecx
cmp edx, edi
jb 0x551040
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 0x5510a8
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 0x55110a
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 0x5510d5
shr ebx, 4
add ebp, dword [esi + ebx*4 + 0x760]
jmp 0x55110a
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 0x55114d
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 0x551136
test edx, edx
mov edx, dword [esp + 0x28]
jne 0x551168
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 + 0x50]
cmova eax, dword [esp + 0x50]
add ebp, 2
mov dword [esp + 0x78], eax
cmp ebp, eax
ja 0x55131e
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 0x55131e
mov al, byte [ebx + ebp - 1]
cmp al, byte [ecx - 1]
jne 0x55131e
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.00552020
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
movzx ecx, byte [ecx + 0x58d0d8]
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 0x5512bd
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x74]
nop dword [eax + eax]
mov al, byte [ecx + ebx]
cmp al, byte [ecx]
jne 0x5512bd
inc ebp
inc ecx
cmp ebp, edi
jb 0x5512b0
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 0x551318
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 0x55132a
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 0x551000
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x80]
cmp edi, edx
jbe 0x55137c
xor eax, eax
xor ecx, ecx
mov edi, edx
cmp edx, dword [esi + 0x960]
jbe 0x55136e
nop word [eax + eax]
add eax, 2
mov ecx, eax
cmp edx, dword [esi + ecx*4 + 0x960]
ja 0x551360
add eax, 2
mov dword [esi + ecx*4 + 0x960], edx
mov dword [esp + 0x38], eax
cmp edi, dword [esp + 0x10]
jb 0x5516d8
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 0x5513e0
nop word [eax + eax]
add edi, 2
cmp ebx, dword [esi + edi*4 + 0x960]
ja 0x5513d0
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 + 0x40], 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 0x55147d
mov eax, ebp
shl edx, 7
and eax, 0x7f
add edx, eax
add ebx, dword [esi + edx*4 + 0x1630]
jmp 0x55149d
shl edx, 6
mov ecx, ebp
add edx, dword [esp + 0x40]
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 0x5514be
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 0x5516b8
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 + 0x50]
mov dword [esp + 0x80], ebx
cmova edi, dword [esp + 0x50]
cmp ecx, edi
ja 0x551673
mov ebp, dword [esp + 0x14]
mov al, byte [ebp + ecx - 2]
cmp al, byte [ebx + ecx - 2]
jne 0x551673
mov al, byte [ebp + ecx - 1]
cmp al, byte [ebx + ecx - 1]
jne 0x551673
cmp ecx, edi
jae 0x551531
add ecx, ebp
sub ebx, ebp
nop
mov al, byte [ecx]
cmp al, byte [ebx + ecx]
jne 0x55152d
inc edx
inc ecx
cmp edx, edi
jb 0x551520
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 [ecx + eax - 3]
movzx eax, byte [ecx + eax - 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.00552020
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 0x551673
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 + 0x38]
je 0x5516d8
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 + 0x40], 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 0x551449
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x20]
inc ebx
mov dword [esp + 0x18], ebx
cmp ebx, ebp
jne 0x550af0
jmp 0x55174b
mov eax, dword [esp + 0x38]
mov dword [esi + 0x24], eax
mov dword [esi + 0x20], ecx
jmp 0x55174b
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 0x551737
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 0x551712
mov eax, dword [esp + 0x18]
mov edx, ebx
sub edx, eax
je 0x551747
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 0x551760
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 0x5517f4
sub dword [esp + 0x18], ecx
sub edi, 0x20
dec ebx
sub edx, 0x20
mov dword [edi], eax
mov eax, ecx
cmp ecx, 1
jne 0x5517d8
mov dword [edx], ebp
or ebp, 0xffffffff
jmp 0x5517f4
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 0x551808
sub edx, 0x20
dec ebx
sub edi, 0x20
mov dword [edx], ebp
mov dword [edi], eax
jmp 0x551790
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