Function at 0x54ba80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [ebp + 0x10]
push ebx
mov bh, byte [eax + 0x3030]
push esi
push edi
mov edi, dword [eax + 0x10]
mov esi, ecx
mov ecx, dword [ebp + 8]
push 0
test edi, edi
lea eax, [esi + 0x10]
push 4
setne bl
push eax
mov byte [ebp - 1], bh
mov byte [ebp - 2], bl
call fcn.00422140
test bh, bh
je 0x54bade
mov ecx, dword [esi + 0x10]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x13]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi + 0x10], edx
mov eax, dword [esi + 0x10]
test eax, eax
setne byte [ebp - 4]
test eax, eax
je 0x54bb03
test bl, bl
je 0x54baff
cmp eax, edi
je 0x54baff
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret 0xc
test eax, eax
jne 0x54bb10
test bl, bl
je 0x54bb0c
mov dword [esi + 0x10], edi
jmp 0x54bb1b
test eax, eax
je 0x54bb1b
test bl, bl
jne 0x54bb1b
mov dword [esi + 0x10], 0
mov edi, dword [ebp + 8]
push 0
push 1
lea eax, [ebp - 3]
push eax
mov ecx, edi
call fcn.00422140
mov al, byte [ebp - 3]
cmp al, 0x59
jne 0x54bb3a
mov byte [esi + 0x20], 1
jmp 0x54bb42
cmp al, 0x4e
jne 0x54bb42
mov byte [esi + 0x20], 0
push 0
push 4
push esi
mov ecx, edi
call fcn.00422140
test bh, bh
je 0x54bb78
mov ecx, dword [esi]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 3]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi], edx
push 0
lea eax, [esi + 4]
push 4
push eax
mov ecx, edi
call fcn.00422140
test bh, bh
je 0x54bbb3
mov ecx, dword [esi + 4]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 7]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi + 4], edx
push 0
lea eax, [esi + 8]
push 4
push eax
mov ecx, edi
call fcn.00422140
test bh, bh
je 0x54bbee
mov ecx, dword [esi + 8]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0xb]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi + 8], edx
mov eax, dword [esi + 8]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
add esp, 4
cmp byte [esi + 0x20], 0
mov dword [ebp - 0xc], eax
je 0x54bc50
mov ecx, dword [ebp + 8]
push 0
push 4
lea edi, [esi + 0x14]
push edi
call fcn.00422140
test bh, bh
je 0x54bc4d
mov ecx, dword [edi]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x17]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [edi], edx
mov edi, dword [ebp + 8]
push 0
push 4
lea ebx, [esi + 0x18]
push ebx
mov ecx, edi
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54bc8b
mov ecx, dword [ebx]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x1b]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [ebx], edx
cmp byte [esi + 0x20], 0
je 0x54bcec
mov eax, dword [esi]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [esi]
add esp, 4
shl ecx, 2
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x24], eax
call fcn.00422140
mov eax, dword [esi]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [esi]
add esp, 4
add ecx, ecx
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x28], eax
call fcn.00422140
mov eax, dword [esi]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [esi]
add esp, 4
shl ecx, 2
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x2c], eax
call fcn.00422140
mov eax, dword [esi]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [esi]
add esp, 4
add ecx, ecx
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x30], eax
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54bdff
xor ebx, ebx
cmp dword [esi], ebx
jbe 0x54bdfc
jmp 0x54bd60
cmp byte [esi + 0x20], 0
je 0x54bdab
mov eax, dword [esi + 0x24]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
add ecx, eax
shr edx, 8
and edx, 0xff00
add ecx, edx
mov dword [edi], ecx
mov eax, dword [esi + 0x28]
movzx ecx, byte [eax + ebx*2 + 1]
lea edx, [eax + ebx*2]
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov word [edx], cx
mov eax, dword [esi + 0x2c]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
add ecx, eax
shr edx, 8
and edx, 0xff00
add ecx, edx
mov dword [edi], ecx
mov eax, dword [esi + 0x30]
movzx ecx, byte [eax + ebx*2 + 1]
lea edx, [eax + ebx*2]
inc ebx
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov word [edx], cx
cmp ebx, dword [esi]
jb 0x54bd60
mov edi, dword [ebp + 8]
lea ebx, [esi + 0x18]
cmp byte [esi + 0x20], 0
je 0x54be20
push dword [esi + 0x14]
call fcn.00582537
add esp, 4
mov ecx, edi
push 0
push dword [esi + 0x14]
mov dword [esi + 0x3c], eax
push eax
call fcn.00422140
push dword [ebx]
call fcn.00582537
add esp, 4
mov ecx, edi
push 0
push dword [ebx]
mov dword [esi + 0x40], eax
push eax
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54be70
mov edi, dword [esi + 0x40]
xor edx, edx
test dword [ebx], 0xfffffffe
jbe 0x54be6d
lea esp, [esp]
mov ax, word [edi + edx*2]
movzx ecx, byte [edi + edx*2 + 1]
shl ax, 8
xor cx, ax
mov word [edi + edx*2], cx
mov eax, dword [ebx]
inc edx
shr eax, 1
cmp edx, eax
jb 0x54be50
mov edi, dword [ebp + 8]
cmp byte [esi + 0x20], 0
lea ebx, [esi + 8]
je 0x54bf23
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [ebx]
add esp, 4
add ecx, ecx
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x54], eax
call fcn.00422140
mov eax, dword [ebx]
push 0
shl eax, 2
push eax
push dword [ebp - 0xc]
mov ecx, edi
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54bf23
xor edi, edi
cmp dword [ebx], edi
jbe 0x54bf23
jmp 0x54bed0
mov eax, dword [esi + 0x54]
movzx ecx, byte [eax + edi*2 + 1]
lea edx, [eax + edi*2]
inc edi
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov eax, dword [ebp - 0xc]
mov word [edx], cx
mov edx, dword [eax + edi*4 - 4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
mov eax, dword [ebp - 0xc]
shl ecx, 8
movzx eax, byte [eax + edi*4 - 1]
shr edx, 8
add ecx, eax
mov eax, dword [ebp - 0xc]
and edx, 0xff00
add ecx, edx
mov dword [eax + edi*4 - 4], ecx
cmp edi, dword [ebx]
jb 0x54bed0
jmp 0x54bf26
mov eax, dword [ebp - 0xc]
cmp byte [esi + 0x20], 0
je 0x54c121
xor ecx, ecx
mov dword [ebp - 8], ecx
cmp dword [ebx], ecx
jbe 0x54c121
mov edx, eax
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x54]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov ebx, dword [ecx + eax*4 + 0x3c]
mov edi, dword [ecx + eax*4 + 0x40]
mov eax, dword [edx]
xor ecx, ecx
add eax, ebx
mov edx, 4
mul edx
seto cl
mov dword [ebp - 0x18], ebx
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [esi + 0x54]
mov edx, dword [ebp - 8]
add esp, 4
cmp byte [ebp - 2], 0
movzx ecx, word [ecx + edx*2]
mov edx, dword [ebp + 0x10]
lea ecx, [ecx + ecx*2]
mov dword [edx + ecx*4 + 0x40], eax
je 0x54bfc1
xor edx, edx
test ebx, ebx
je 0x54bfb8
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
inc edx
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov ecx, dword [ecx + eax*4 + 0x40]
mov eax, dword [edi + edx*4 - 4]
mov dword [ecx + edx*4 - 4], eax
cmp edx, ebx
jb 0x54bf97
push edi
call fcn.00586d16
add esp, 4
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x14]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
xor ebx, ebx
lea ecx, [ecx + eax*4]
mov eax, dword [edx]
add dword [ecx + 0x3c], eax
cmp dword [edx], ebx
jbe 0x54c10b
mov edi, dword [ebp - 0x18]
shl edi, 2
lea esp, [esp]
mov ecx, dword [ebp + 8]
push 0
push 4
lea eax, [ebp - 0x10]
push eax
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54c030
mov ecx, dword [ebp - 0x10]
mov edx, ecx
shl edx, 0x10
mov eax, ecx
and eax, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
shl edx, 8
and eax, 0xff00
add edx, eax
shr ecx, 0x18
add edx, ecx
mov dword [ebp - 0x10], edx
jmp 0x54c033
mov edx, dword [ebp - 0x10]
cmp byte [ebp - 4], 0
je 0x54c049
cmp byte [ebp - 2], 0
je 0x54c04f
mov ecx, dword [esi + 0x10]
add ecx, edx
jmp 0x54c0e5
cmp byte [ebp - 2], 0
jne 0x54c06b
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*4 + 0x40]
mov dword [edi + eax], edx
jmp 0x54c0fc
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp - 8]
movzx eax, word [eax + edx*2]
push eax
mov eax, dword [esi + 0x2c]
mov eax, dword [eax + edx*4]
add eax, dword [esi + 0x40]
push eax
mov eax, dword [esi + 0x28]
movzx eax, word [eax + edx*2]
push eax
mov eax, dword [esi + 0x24]
mov eax, dword [eax + edx*4]
add eax, dword [esi + 0x3c]
push eax
mov eax, dword [esi + 0x54]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
push dword [ecx + eax*4 + 0x40]
push dword [ebp - 0x18]
push edx
call fcn.0054ca00
test al, al
je 0x54c0df
mov ecx, dword [esi + 0x28]
mov eax, dword [ebp - 0x10]
xor edx, edx
mov word [ecx + eax*2], dx
mov ecx, dword [esi + 0x30]
mov eax, dword [ebp - 0x10]
mov word [ecx + eax*2], dx
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
dec dword [ecx + eax*4 + 0x3c]
dec dword [esi + 4]
jmp 0x54c0ff
mov ecx, dword [esi + 0x10]
add ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov eax, dword [esi + 0x54]
movzx eax, word [eax + edx*2]
mov edx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*4 + 0x40]
mov dword [edi + eax], ecx
add edi, 4
mov edx, dword [ebp - 0x14]
inc ebx
cmp ebx, dword [edx]
jb 0x54bff0
mov ecx, dword [ebp - 8]
inc ecx
add edx, 4
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], edx
cmp ecx, dword [esi + 8]
jb 0x54bf42
mov ecx, dword [ebp + 8]
push 0
push 4
lea ebx, [esi + 0xc]
push ebx
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54c15d
mov ecx, dword [ebx]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0xf]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [ebx], edx
cmp dword [ebx], 0
je 0x54c30d
mov ecx, dword [ebp + 8]
push 0
push 4
lea edi, [esi + 0x1c]
push edi
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54c1a2
mov ecx, dword [edi]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x1f]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [edi], edx
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [ebx]
add esp, 4
shl ecx, 2
push 0
push ecx
mov ecx, dword [ebp + 8]
push eax
mov dword [esi + 0x58], eax
call fcn.00422140
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [ebx]
add esp, 4
shl ecx, 2
push 0
push ecx
mov ecx, dword [ebp + 8]
push eax
mov dword [esi + 0x34], eax
call fcn.00422140
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00582537
mov ecx, dword [ebx]
add esp, 4
add ecx, ecx
push 0
push ecx
mov ecx, dword [ebp + 8]
push eax
mov dword [esi + 0x38], eax
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54c2be
xor ebx, ebx
cmp dword [esi + 0xc], ebx
jbe 0x54c2be
mov eax, dword [esi + 0x38]
movzx ecx, byte [eax + ebx*2 + 1]
lea edx, [eax + ebx*2]
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov word [edx], cx
mov eax, dword [esi + 0x34]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
add ecx, eax
shr edx, 8
and edx, 0xff00
add ecx, edx
mov dword [edi], ecx
mov eax, dword [esi + 0x58]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
shr edx, 8
add ecx, eax
and edx, 0xff00
add ecx, edx
inc ebx
mov dword [edi], ecx
cmp ebx, dword [esi + 0xc]
jb 0x54c243
lea edi, [esi + 0x1c]
push dword [edi]
call fcn.00582537
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [esi + 0x44], eax
push 0
push dword [edi]
push eax
call fcn.00422140
cmp byte [ebp - 1], 0
je 0x54c30d
mov esi, dword [esi + 0x44]
xor edx, edx
test dword [edi], 0xfffffffe
jbe 0x54c30d
jmp 0x54c2f0
mov ax, word [esi + edx*2]
movzx ecx, byte [esi + edx*2 + 1]
shl ax, 8
xor cx, ax
mov word [esi + edx*2], cx
mov eax, dword [edi]
inc edx
shr eax, 1
cmp edx, eax
jb 0x54c2f0
push dword [ebp - 0xc]
call fcn.00586d16
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc