Function at 0x7031bbba
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
in eax, 0
mov eax, dword [ebp - 0x40]
jmp 0x7031bc09
test ecx, ecx
jne 0x7031bc15
and edx, 0xffff0000
mov ecx, edx
sub eax, ecx
add eax, 0xffffffc0
jns 0x7031bc1e
xor eax, eax
add eax, ecx
push 0x40
pop edx
mov byte [eax], 0
inc eax
dec edx
jne 0x7031bc23
lea eax, [esi + ebx]
mov dword [ebp - 0x40], eax
mov eax, dword [0xcb6588]
mov dword [ebp - 0x34], esi
sub eax, ebx
lea esi, [eax + 1]
sub dword [ebp - 0x34], edi
xor eax, eax
test esi, esi
mov edx, esi
je 0x7031bc6f
mov ebx, dword [0xe747a4]
imul ebx, ebx, 0x343fd
add ebx, 0x269ec3
mov dword [0xe747a4], ebx
shr ebx, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, ebx
test edx, edx
jne 0x7031bc48
xor edx, edx
div esi
lea eax, [ecx + edx]
push eax
push dword [ebp - 0x58]
mov dword [ebp - 0x54], eax
push dword [ebp - 0x34]
mov eax, 0x8e19f2b4
mov eax, dword [ebp - 0x40]
mov esi, dword [eax]
mov ebx, dword [eax + 4]
lea eax, [ebp - 0x8c]
push eax
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x88], ebx
mov byte [ebp - 0xd], 0
mov eax, 0x9476623c
mov ecx, dword [0xd847bc]
mov eax, 0xfffffff
and dword [ebp - 0x28], 0
and dword [ebp - 0x24], 0
and esi, eax
and ebx, eax
add esp, 0x10
add esi, edi
mov eax, edi
sub eax, ecx
mov dword [ebp - 0x1c], eax
jne 0x7031bd23
and dword [ebp - 0x20], 0
test ebx, ebx
jbe 0x7031bf33
mov ecx, 0x3d5e919b
mov eax, dword [ebp - 0x20]
movzx eax, byte [eax + esi]
add eax, ecx
add dword [ebp - 0x28], eax
add eax, dword [ebp - 0x24]
imul eax, eax, 0x3d5e919b
ror eax, 0x13
imul eax, eax, 0x3d5e919b
ror eax, 0x13
mov edx, eax
imul eax, eax, 0x5653
rol eax, 0xb
ror edx, 0xb
xor eax, edx
add dword [ebp - 0x28], eax
inc dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x20], ebx
jb 0x7031bcdf
jmp 0x7031bf33
mov edx, dword [0xba003c]
lea eax, [esi + ebx]
lea edx, [edx + 0xba00a0]
mov dword [ebp - 0x38], eax
mov ecx, esi
sub ecx, edi
mov eax, dword [edx]
mov edx, dword [edx + 4]
mov dword [ebp - 0x30], edx
mov edx, ecx
and edx, 0xfffff000
mov dword [ebp - 0x18], edx
mov edx, ecx
sub edx, dword [ebp - 0x18]
add ecx, ebx
mov ebx, ecx
and ebx, 0xfffff000
sub ecx, ebx
mov dword [ebp - 0x68], ecx
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x6c], ebx
add eax, edi
add ecx, eax
mov dword [ebp - 0x64], ecx
mov edx, eax
cmp eax, ecx
je 0x7031bd85
mov eax, dword [ebp - 0x18]
cmp dword [edx], eax
jae 0x7031bd85
add edx, dword [edx + 4]
cmp edx, dword [ebp - 0x64]
jne 0x7031bd76
and dword [ebp - 0x5c], 0
cmp edx, dword [ebp - 0x64]
je 0x7031bdc2
mov eax, dword [ebp - 0x18]
cmp dword [edx], eax
jne 0x7031bdc2
mov eax, dword [edx + 4]
sub eax, 8
shr eax, 1
je 0x7031bdc2
lea ecx, [edx + 8]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x18]
movzx ecx, word [ecx]
and ecx, 0xfff
cmp ecx, dword [ebp - 0x2c]
jae 0x7031bdc2
inc dword [ebp - 0x5c]
add dword [ebp - 0x18], 2
cmp dword [ebp - 0x5c], eax
jne 0x7031bda5
mov ecx, 0x3d5e919b
jmp 0x7031bdcc
mov ebx, dword [ebp - 0x6c]
cmp edx, dword [ebp - 0x64]
je 0x7031beed
cmp dword [edx], ebx
ja 0x7031beed
mov eax, dword [edx + 4]
lea ebx, [eax - 8]
mov eax, dword [ebp - 0x5c]
shr ebx, 1
cmp eax, ebx
jne 0x7031be09
add edx, dword [edx + 4]
cmp edx, dword [ebp - 0x64]
je 0x7031beed
mov eax, dword [ebp - 0x6c]
cmp dword [edx], eax
ja 0x7031beed
and dword [ebp - 0x5c], 0
jmp 0x7031bddd
mov ebx, dword [ebp - 0x6c]
cmp dword [edx], ebx
jne 0x7031be23
movzx eax, word [edx + eax*2 + 8]
and eax, 0xfff
cmp eax, dword [ebp - 0x68]
jae 0x7031beed
mov eax, dword [ebp - 0x5c]
inc dword [ebp - 0x5c]
mov ebx, 0xf000
test word [edx + eax*2 + 8], bx
je 0x7031bdc9
mov ebx, dword [edx]
movzx eax, word [edx + eax*2 + 8]
and eax, 0xfff
lea ebx, [eax + ebx + 0xba0000]
mov dword [ebp - 0x18], ebx
xor eax, eax
sub dword [ebp - 0x18], esi
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x2c], eax
je 0x7031be9a
movzx eax, byte [eax + esi]
add eax, ecx
add dword [ebp - 0x28], eax
add eax, dword [ebp - 0x24]
imul eax, eax, 0x3d5e919b
ror eax, 0x13
imul eax, eax, 0x3d5e919b
ror eax, 0x13
mov ebx, eax
imul ebx, ebx, 0x5653
rol ebx, 0xb
ror eax, 0xb
xor ebx, eax
mov eax, ebx
add dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x2c]
inc eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x2c], eax
cmp eax, dword [ebp - 0x18]
jb 0x7031be58
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
sub eax, dword [ebp - 0x1c]
mov dword [ebp - 0x80], eax
xor ebx, ebx
movzx eax, byte [ebp + ebx - 0x80]
add eax, ecx
add dword [ebp - 0x28], eax
add eax, dword [ebp - 0x24]
imul eax, eax, 0x3d5e919b
ror eax, 0x13
imul eax, eax, 0x3d5e919b
ror eax, 0x13
mov esi, eax
imul eax, eax, 0x5653
rol eax, 0xb
ror esi, 0xb
xor eax, esi
add dword [ebp - 0x28], eax
inc ebx
cmp ebx, 4
mov dword [ebp - 0x24], eax
jb 0x7031bea7
mov esi, dword [ebp - 0x20]
add esi, 4
jmp 0x7031bdc9
xor ebx, ebx
mov eax, dword [ebp - 0x38]
sub eax, esi
mov dword [ebp - 0x30], eax
je 0x7031bf33
movzx eax, byte [ebx + esi]
add eax, ecx
add dword [ebp - 0x28], eax
add eax, dword [ebp - 0x24]
imul eax, eax, 0x3d5e919b
ror eax, 0x13
imul eax, eax, 0x3d5e919b
ror eax, 0x13
mov edx, eax
imul eax, eax, 0x5653
rol eax, 0xb
ror edx, 0xb
xor eax, edx
add dword [ebp - 0x28], eax
inc ebx
mov dword [ebp - 0x24], eax
cmp ebx, dword [ebp - 0x30]
jb 0x7031bef9
xor ebx, ebx
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0x28]
mov byte [ebp + eax - 0xc], cl
inc eax
cmp eax, 8
jb 0x7031bf37
mov eax, 0x686fbe7a
mov eax, dword [ebp - 0x54]
mov esi, dword [ebp - 0x70]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x58]
and eax, 7
mov dword [ebp - 0x30], eax
je 0x7031c377
cmp eax, ebx
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x1c], ebx
not edi
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x14], ebx
jle 0x7031bfa2
push 0x38
pop edx
movzx ebx, byte [esi]
cmp dword [ebp - 0x14], 4
jge 0x7031bf8f
lea ecx, [edx - 0x20]
shl ebx, cl
or dword [ebp - 0x4c], ebx
jmp 0x7031bf96
mov ecx, edx
shl ebx, cl
or dword [ebp - 0x1c], ebx
inc esi
inc dword [ebp - 0x14]
sub edx, 8
cmp dword [ebp - 0x14], eax
jl 0x7031bf7c
movzx edx, word [ebp - 0xc]
mov eax, dword [ebp - 0x34]
movzx ebx, word [ebp - 8]
movzx ecx, word [ebp - 6]
sub eax, ecx
sub eax, dword [ebp - 0xc]
xor edi, eax
mov dword [ebp - 0x48], edx
xor edx, edi
imul edx, ebx
mov eax, edi
ror eax, 0xe
xor eax, edx
movzx edx, word [ebp - 0xa]
xor eax, dword [ebp - 0x34]
mov ebx, eax
xor ecx, eax
imul ecx, edx
ror ebx, 0xb
sub ecx, ebx
xor edi, ecx
mov ecx, edi
mov ebx, dword [ebp - 0x48]
mov dword [ebp - 0x20], edx
mov edx, edi
sub ecx, dword [ebp - 8]
ror ecx, 0xb
imul ebx, ecx
movzx ecx, word [ebp - 8]
rol edx, 3
add edx, ebx
mov ebx, ecx
movzx ecx, word [ebp - 6]
xor eax, edx
xor ebx, eax
mov edx, eax
imul ebx, ecx
mov ecx, dword [ebp - 0x20]
ror edx, 1
add edx, ebx
mov ebx, ecx
xor edi, edx
xor ebx, edi
movzx edx, word [ebp - 8]
imul ebx, edx
mov edx, edi
shr edx, 0xa
add ebx, edx
mov edx, dword [ebp - 8]
xor eax, ebx
mov ebx, eax
sub edx, eax
rol edx, 0xc
imul ecx, edx
ror ebx, 0x10
add ebx, ecx
mov ecx, dword [ebp - 8]
xor edi, ebx
mov ebx, dword [ebp - 0x48]
mov edx, edi
xor ecx, edi
ror ecx, 8
imul ebx, ecx
ror edx, 0x10
add edx, ebx
xor eax, edx
movzx ebx, word [ebp - 6]
mov ecx, dword [ebp - 0x48]
mov edx, ecx
xor edx, eax
rol edx, 3
mov dword [ebp - 0x14], ebx
imul ebx, edx
mov edx, eax
shr edx, 0xc
add ebx, edx
movzx edx, word [ebp - 8]
mov dword [ebp - 0x18], edx
xor edi, ebx
mov ebx, edi
ror ebx, 3
sub ebx, edx
imul ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 8]
xor edx, dword [ebp - 0xc]
and dword [ebp - 0x14], 0
xor edx, edi
xor eax, ebx
xor edx, eax
mov edi, edx
sub edi, dword [ebp - 0x18]
rol edi, 5
imul ecx, edi
mov edi, edx
xor edx, dword [ebp - 0x1c]
shr edi, 0xa
xor ecx, edi
mov edi, dword [ebp - 0x30]
xor ecx, dword [ebp - 0x4c]
xor eax, ecx
mov dword [ebp - 0x44], eax
test edi, edi
mov dword [ebp - 0x38], edx
jle 0x7031c0e0
mov ebx, dword [ebp - 0x3c]
inc dword [ebp - 0x3c]
cmp dword [ebp - 0x14], 4
jge 0x7031c0cc
rol dword [ebp - 0x44], 8
mov cl, byte [ebp - 0x44]
mov byte [ebx], cl
jmp 0x7031c0d5
rol dword [ebp - 0x38], 8
mov cl, byte [ebp - 0x38]
mov byte [ebx], cl
xor byte [ebp - 0xd], cl
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x7031c0b5
add edi, 0xfffffffc
test edi, edi
jle 0x7031c35d
push 4
pop ecx
sub ecx, edi
shl ecx, 3
shr edx, cl
shl edx, cl
mov edi, 0xba0000
mov ebx, dword [ebp - 0x58]
shr ebx, 3
test ebx, ebx
jbe 0x7031c2dc
movzx ecx, word [ebp - 0xa]
mov dword [ebp - 0x20], ecx
movzx ecx, word [ebp - 6]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 8]
xor ecx, dword [ebp - 0xc]
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x7c], ecx
movzx ecx, word [ebp - 8]
mov dword [ebp - 0x2c], ecx
neg dword [ebp - 0x2c]
mov dword [ebp - 0x18], ecx
movzx ecx, word [ebp - 0xc]
mov dword [ebp - 0x48], ecx
movzx edi, byte [esi + 1]
movzx ecx, byte [esi]
shl ecx, 8
movzx ebx, byte [esi + 5]
or ecx, edi
movzx edi, byte [esi + 2]
shl ecx, 8
or ecx, edi
movzx edi, byte [esi + 3]
shl ecx, 8
or ecx, edi
movzx edi, byte [esi + 4]
shl edi, 8
or edi, ebx
movzx ebx, byte [esi + 6]
xor eax, ecx
shl edi, 8
or edi, ebx
shl edi, 8
movzx ebx, byte [esi + 7]
or edi, ebx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x38], edi
mov ecx, eax
sub ecx, dword [ebp - 0x14]
add esi, 8
sub ecx, dword [ebp - 0xc]
xor ecx, edi
xor edx, ecx
mov edi, dword [ebp - 0x48]
xor edi, edx
imul edi, dword [ebp - 0x18]
mov ecx, edx
ror ecx, 0xe
xor ecx, edi
mov edi, dword [ebp - 0x14]
xor eax, ecx
xor edi, eax
mov ecx, eax
imul edi, dword [ebp - 0x20]
ror ecx, 0xb
sub edi, ecx
xor edx, edi
mov ecx, edx
sub ecx, dword [ebp - 8]
mov ebx, edx
ror ecx, 0xb
movzx edi, word [ebp - 0xc]
imul edi, ecx
rol ebx, 3
movzx ecx, word [ebp - 8]
add ebx, edi
xor eax, ebx
mov ebx, dword [ebp - 0x20]
mov edi, eax
xor ecx, eax
imul ecx, dword [ebp - 0x14]
ror edi, 1
add edi, ecx
xor edx, edi
movzx ecx, word [ebp - 8]
mov edi, dword [ebp - 0x20]
xor edi, edx
imul edi, ecx
mov ecx, edx
shr ecx, 0xa
add edi, ecx
mov ecx, dword [ebp - 8]
xor eax, edi
mov edi, eax
sub ecx, eax
rol ecx, 0xc
imul ebx, ecx
ror edi, 0x10
add edi, ebx
mov ecx, dword [ebp - 8]
xor edx, edi
mov ebx, edx
xor ecx, edx
ror ecx, 8
movzx edi, word [ebp - 0xc]
ror ebx, 0x10
imul edi, ecx
add ebx, edi
xor eax, ebx
movzx edi, word [ebp - 0xc]
mov ecx, edi
mov ebx, dword [ebp - 0x14]
xor ecx, eax
rol ecx, 3
imul ebx, ecx
mov ecx, eax
shr ecx, 0xc
add ebx, ecx
xor edx, ebx
movzx ecx, word [ebp - 8]
mov ebx, edx
ror ebx, 3
sub ebx, ecx
imul ebx, dword [ebp - 0x14]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x7c]
xor ecx, edx
xor eax, ebx
xor ecx, eax
mov edx, ecx
mov ecx, dword [ebp - 0x2c]
add ecx, edx
mov dword [ebp - 0x48], edi
rol ecx, 5
imul edi, ecx
mov ecx, edx
xor edx, dword [ebp - 0x1c]
shr ecx, 0xa
xor edi, ecx
mov cl, byte [ebp - 0xd]
xor edi, dword [ebp - 0x4c]
xor eax, edi
xor cl, al
mov edi, dword [ebp - 0x3c]
xor cl, dl
mov byte [edi + 3], al
ror eax, 8
xor cl, al
mov byte [edi + 7], dl
ror edx, 8
xor cl, dl
mov byte [edi + 2], al
mov byte [edi + 6], dl
ror eax, 8
mov byte [edi + 1], al
xor cl, al
ror edx, 8
xor cl, dl
ror eax, 8
mov byte [edi + 5], dl
ror edx, 8
mov bl, dl
xor bl, al
xor cl, bl
mov byte [ebp - 0xd], cl
mov ecx, dword [ebp - 0x44]
mov byte [edi], al
mov byte [edi + 4], dl
add edi, 8
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0x38]
dec dword [ebp - 0x30]
ror eax, 8
ror edx, 8
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x3c], edi
jne 0x7031c138
mov edi, 0xba0000
mov ecx, dword [ebp - 0x40]
movzx eax, byte [ebp - 0xd]
movzx ecx, byte [ecx + 8]
sub eax, ecx
je 0x7031c3a1
call 0x70521b80
mov edx, 0xffff
mov edi, eax
mov ecx, dword [ebp - 0x78]
and ecx, 0xfffffffc
mov eax, 0xfffff000
lea esi, [ecx + 0xfff]
and edi, eax
and esi, eax
mov eax, dword [ebp - 0x74]
mov dword [eax + 8], 0xc78814
xor eax, eax
mov ebx, dword [0xe747a4]
imul ebx, ebx, 0x343fd
add ebx, 0x269ec3
mov dword [0xe747a4], ebx
shr ebx, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, ebx
test edx, edx
jne 0x7031c31c
mov ebx, 0xffff
div ebx
mov eax, dword [ebp - 0x50]
inc edx
mov dword [eax + 0xc], edi
mov dword [eax + 0x14], edx
mov dword [ebp - 0x50], 0
jmp 0x7031c393
xor edx, edx
test edi, edi
jge 0x7031c0f7
neg edi
shl edi, 3
mov ecx, edi
shr eax, cl
shl eax, cl
jmp 0x7031c0f7
xor edx, edx
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x4c], eax
not eax
mov dword [ebp - 0x1c], eax
xor eax, eax
jmp 0x7031c0fc
mov eax, dword [ebp - 0x50]
mov dword [ecx], eax
add ecx, 4
cmp ecx, esi
jb 0x7031c38b
mov eax, 0xc78814
jmp 0x7031c483
mov eax, dword [0xd847bc]
mov ebx, dword [ebp - 0x70]
sub ebx, dword [ebp - 0x54]
mov dword [ebp - 0x40], ebx
sub edi, eax
mov dword [ebp - 0x30], edi
jne 0x7031c3be
test ebx, ebx
je 0x7031c46e
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp - 0x54]
sub esi, dword [ebp - 0x70]
add ecx, eax
mov dword [ebp - 0x50], ecx
xor edi, edi
mov ecx, dword [0xd8fd70]
dec ecx
js 0x7031c405
lea eax, [edi + ecx]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0xd8fd74]
and edx, 0xfffffff
cmp dword [ebp - 0x34], edx
jae 0x7031c3f9
lea ecx, [eax - 1]
jmp 0x7031c3fe
jbe 0x7031c40a
lea edi, [eax + 1]
cmp ecx, edi
jge 0x7031c3da
mov ebx, dword [ebp - 0x40]
mov dword [ebp - 0x1c], edi
jmp 0x7031c463
mov ebx, dword [ebp - 0x40]
mov dword [ebp - 0x1c], eax
jmp 0x7031c463
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax*4 + 0xd8fd74]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x50]
jae 0x7031c46e
lea edi, [ecx + esi + 0xba0000]
mov ecx, eax
shl ecx, 2
sar ecx, 0x1e
sar eax, 0x1e
and ecx, 3
and eax, 3
xor edx, edx
dec ecx
je 0x7031c455
dec ecx
je 0x7031c451
dec ecx
jne 0x7031c45a
mov edx, dword [ebp - 0x30]
jmp 0x7031c45a
mov edx, ebx
jmp 0x7031c45a
mov edx, dword [ebp - 0x30]
sub edx, ebx
dec eax
dec eax
jne 0x7031c460
add dword [edi], edx
inc dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp eax, dword [0xd8fd70]
jb 0x7031c412
mov eax, dword [0xcb6588]
mov eax, 0xc82c50a8
mov ecx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x84]
add eax, ecx
mov ecx, dword [ebp - 0x74]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 4]
add dword [eax], 0xc
xor ecx, ebp
pop edi
pop esi
pop ebx
call 0x7056b07a
leave
ret 8