Function at 0x43c48c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
push ebx
push esi
mov esi, dword [ebp + 0x14]
push edi
mov edi, dword [ebp + 8]
xor edx, edx
cmp dword [edi + 0xc], edx
jne 0x43c4ab
mov dword [ebp - 0x10], 1
jmp 0x43c4b1
mov ecx, dword [edi + 0x64]
mov dword [ebp - 0x10], ecx
mov cl, byte [edi + 0x8084]
mov byte [ebp - 1], cl
mov cl, byte [edi + 0x8085]
mov byte [ebp - 2], cl
mov ecx, dword [edi + 0x8588]
mov ebx, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [ebp - 0x20], ebx
mov ebx, dword [edi + 0x85d8]
shl ebx, 6
lea ecx, [ebx + ecx - 0x40]
mov dword [ebp - 0x1c], ecx
cmp dword [ebp - 0x10], edx
jbe 0x43c504
lea ecx, [edi + 0x8660]
mov ebx, dword [ecx]
mov esi, edx
and esi, 0xf
inc edx
add ecx, 4
mov dword [ebp + esi*4 - 0x7c], ebx
cmp edx, dword [ebp - 0x10]
jb 0x43c4ed
mov esi, dword [ebp + 0x14]
cmp dword [edi + 0x8590], 0
je 0x43c51f
mov ecx, dword [edi + 0x8760]
mov dword [ebp - 0x78], ecx
mov ecx, dword [edi + 0x8764]
mov dword [ebp - 0x74], ecx
mov ecx, dword [edi + 0x10]
dec ecx
je 0x43ca28
dec ecx
je 0x43c966
dec ecx
je 0x43c89b
dec ecx
je 0x43c7e8
dec ecx
je 0x43c73b
dec ecx
je 0x43c68e
dec ecx
jne 0x43cad8
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x43cad8
shl eax, 4
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], ecx
jmp 0x43c66a
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x14]
mov edx, dword [edi + 0x8090]
and dword [ebp - 0x24], 0
cmp dword [ebp - 0x10], 0
lea ecx, [edx + ecx*4]
mov dword [ebp - 0x3c], ecx
jbe 0x43c669
mov esi, dword [ebp - 0x2c]
movzx ecx, byte [ebp - 1]
mov edx, eax
and edx, 0xf
lea edx, [edx + esi + 0x5b3f40]
xor edi, edi
mov dword [ebp - 0x34], edx
movsx edx, byte [ebp - 2]
and eax, 0xfffffff0
inc edi
shl eax, 4
mov dword [ebp - 0x28], 0x17
shl edi, cl
sub dword [ebp - 0x28], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x38], edx
jmp 0x43c5d8
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ecx]
add ecx, eax
mov eax, dword [ebp - 0x24]
and eax, 0xf
mov eax, dword [ebp + eax*4 - 0x7c]
mov eax, dword [eax + ecx*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, dword [ebp - 0x18]
mov esi, eax
sar esi, 0x1f
mov ebx, esi
xor ebx, eax
sub ebx, esi
mov edx, ebx
shr edx, cl
lea eax, [edi - 1]
and eax, ebx
or eax, edi
test edx, edx
jne 0x43c615
xor eax, edi
inc edx
push 0x7f
pop ecx
sub ecx, dword [ebp - 0x38]
add edx, ecx
cmp eax, edi
jge 0x43c639
cmp edx, 1
jle 0x43c631
test eax, eax
jle 0x43c631
add eax, eax
dec edx
cmp eax, edi
jl 0x43c621
cmp eax, edi
jge 0x43c639
xor edx, edx
jmp 0x43c63b
xor eax, edi
mov ecx, dword [ebp - 0x28]
shl eax, cl
mov ecx, dword [ebp - 0x24]
shl edx, 0x17
and esi, 0x80000000
or eax, edx
mov edx, dword [ebp - 0x3c]
or eax, esi
mov dword [edx + ecx*4], eax
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, dword [ebp - 0x10]
jb 0x43c5d5
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x43c578
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp - 0x2c], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x43c564
jmp 0x43cad8
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x43cad8
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + esi*4]
cmp eax, dword [ebp + 0x10]
mov edx, eax
mov dword [ebp - 0x14], ecx
jmp 0x43c71e
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edx*4]
add eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x8090]
xor esi, esi
lea eax, [ecx + eax*4]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x10], esi
jbe 0x43c71a
mov ecx, dword [ebp + 8]
mov eax, edx
and eax, 0xf
lea eax, [eax + ecx + 0x5b3f40]
movzx ecx, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], ecx
movzx ecx, byte [eax]
add ecx, edx
mov ebx, esi
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x7c]
mov ebx, dword [ebx + ecx*4]
add ebx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar ebx, cl
mov ecx, dword [ebp - 0x18]
shl ebx, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ecx + esi*4], ebx
inc esi
cmp esi, dword [ebp - 0x10]
jb 0x43c6ed
mov edx, dword [ebp - 0xc]
inc edx
cmp edx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edx
jb 0x43c6b5
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x43c69f
jmp 0x43cad8
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x43cad8
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + esi*4]
cmp eax, dword [ebp + 0x10]
mov edx, eax
mov dword [ebp - 0x14], ecx
jmp 0x43c7cb
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edx*4]
add eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x8090]
xor esi, esi
lea eax, [ecx + eax*4]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x10], esi
jbe 0x43c7c7
mov ecx, dword [ebp + 8]
mov eax, edx
and eax, 0xf
lea eax, [eax + ecx + 0x5b3f40]
movzx ecx, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], ecx
movzx ecx, byte [eax]
add ecx, edx
mov ebx, esi
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x7c]
mov ebx, dword [ebx + ecx*4]
add ebx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar ebx, cl
mov ecx, dword [ebp - 0x18]
shl ebx, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ecx + esi*4], ebx
inc esi
cmp esi, dword [ebp - 0x10]
jb 0x43c79a
mov edx, dword [ebp - 0xc]
inc edx
cmp edx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edx
jb 0x43c762
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x43c74c
jmp 0x43cad8
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x43cad8
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + edx*4]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], ecx
jmp 0x43c87e
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + ecx*4]
add eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x8090]
xor edx, edx
lea eax, [ecx + eax*2]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x10], edx
jbe 0x43c878
mov esi, dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
mov eax, esi
and eax, 0xf
and esi, 0xfffffff0
lea ebx, [eax + ecx + 0x5b3f40]
shl esi, 4
movzx eax, byte [ebx]
add eax, esi
mov ecx, edx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x7c]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, eax
sar ecx, 0x1f
and eax, 0x7fff
xor eax, ecx
sub eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + edx*2], ax
inc edx
cmp edx, dword [ebp - 0x10]
jb 0x43c844
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp + 0x10]
jb 0x43c80d
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x43c7f9
jmp 0x43cad8
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x43cad8
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], ecx
jmp 0x43c942
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x14]
mov edx, dword [edi + 0x8090]
xor ebx, ebx
lea ecx, [edx + ecx*2]
mov dword [ebp - 0x3c], ecx
cmp dword [ebp - 0x10], ebx
jbe 0x43c941
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x5b3f40]
mov edx, eax
movzx eax, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], eax
movzx eax, byte [esi]
add eax, edx
mov ecx, ebx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x7c]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, dword [ebp - 0x18]
shl eax, cl
cmp eax, 0xffff8000
jge 0x43c926
mov eax, 0xffff8000
jmp 0x43c931
mov ecx, 0x7fff
cmp eax, ecx
jle 0x43c931
mov eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp - 0x10]
jb 0x43c8fa
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x43c8c0
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x43c8ac
jmp 0x43cad8
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x43cad8
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], ecx
jmp 0x43ca04
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x14]
mov edx, dword [edi + 0x8090]
xor ebx, ebx
lea ecx, [edx + ecx*2]
mov dword [ebp - 0x3c], ecx
cmp dword [ebp - 0x10], ebx
jbe 0x43ca03
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x5b3f40]
mov edx, eax
movzx eax, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], eax
movzx eax, byte [esi]
add eax, edx
mov ecx, ebx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x7c]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, dword [ebp - 0x18]
shl eax, cl
test eax, eax
jge 0x43c9e8
xor eax, eax
jmp 0x43c9f3
mov ecx, 0xffff
cmp eax, ecx
jle 0x43c9f3
mov eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp - 0x10]
jb 0x43c9c2
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x43c988
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x43c977
jmp 0x43cad8
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x43cad8
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + edx*4]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], ecx
jmp 0x43cac0
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xc]
mov eax, dword [eax + ecx*4]
add eax, dword [edi + 0x8090]
and dword [ebp - 0x24], 0
add eax, dword [ebp - 0x14]
cmp dword [ebp - 0x10], 0
jbe 0x43caba
mov edx, dword [ebp + 8]
mov esi, ecx
and ecx, 0xf
and esi, 0xfffffff0
lea ebx, [ecx + edx + 0x5b3f40]
shl esi, 4
movzx ecx, byte [ebx]
mov edx, dword [ebp - 0x24]
and edx, 0xf
mov edx, dword [ebp + edx*4 - 0x7c]
add ecx, esi
mov edx, dword [edx + ecx*4]
add edx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar edx, cl
test edx, edx
jge 0x43caa0
xor edx, edx
jmp 0x43caab
mov ecx, 0xff
cmp edx, ecx
jle 0x43caab
mov edx, ecx
mov ecx, dword [ebp - 0x24]
mov byte [eax + ecx], dl
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, dword [ebp - 0x10]
jb 0x43ca7e
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp + 0x10]
jb 0x43ca4d
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x43ca39
pop edi
pop esi
pop ebx
leave
ret