Function at 0x43cd12
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov edi, dword [ebp + 8]
push eax
push eax
mov edx, esp
movzx esi, word [edi]
mov dword [ebp - 0x18], 0xc1c06513
mov ecx, 0x2e
nop
movzx eax, byte [ebp + ecx - 0x46]
mov ebx, eax
and ebx, ecx
add bl, bl
sub al, bl
movzx eax, al
add eax, ecx
add al, 0x10
mov byte [ebp + ecx - 0x46], al
inc ecx
cmp ecx, 0x32
jne case.default.0x43c848
xor ecx, ecx
cmp dword [ebp - 0x18], esi
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44758c]
mov ecx, dword [edi + 0x3c]
mov dword [ebp - 0x14], ecx
mov ecx, dword [edi + ecx]
mov dword [ebp - 0x10], ecx
mov dword [edx], 0x88b77365
mov word [edx + 4], 0
mov edi, 0x1423915d
nop
nop
nop
nop
movzx esi, byte [edx + edi - 0x1423915d]
mov ebx, edi
xor ebx, esi
lea ecx, [ebx + ebx]
not ecx
add ecx, ebx
and ecx, edi
add ecx, ecx
sub esi, ecx
add esi, edi
mov ebx, esi
and ebx, 0x17
add ebx, ebx
xor esi, 0xe8
sub ebx, esi
mov byte [edx + edi - 0x1423915d], bl
inc edi
cmp edi, 0x14239163
jne 0x43c870
xor ecx, ecx
mov esi, dword [ebp - 0x10]
cmp esi, dword [edx]
setne cl
mov edi, dword [ebp + 8]
jmp dword [ecx*4 + 0x447594]
mov ecx, dword [ebp - 0x14]
mov ebx, dword [edi + ecx + 0x78]
mov esi, dword [edi + ecx + 0x7c]
test ebx, ebx
sete cl
test esi, esi
sete dl
or dl, cl
movzx ecx, dl
jmp dword [ecx*4 + 0x44759c]
mov dword [ebp - 0x28], esi
mov eax, dword [edi + ebx + 0x20]
add eax, edi
mov dword [ebp - 0x40], eax
mov eax, dword [edi + ebx + 0x24]
add eax, edi
mov dword [ebp - 0x30], eax
mov eax, dword [edi + ebx + 0x1c]
add eax, edi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], ebx
mov edx, dword [edi + ebx + 0x18]
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x3c], edx
cmp ecx, edx
setb al
mov dword [ebp - 0x38], 1
jmp dword [eax*4 + 0x4475a4]
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x24], ecx
mov edx, dword [eax + ecx*4]
add edx, edi
mov eax, 0xffffffff
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, ecx
cmp byte [edx + eax + 1], 0
lea eax, [eax + 1]
lea ecx, [ecx + 1]
jne 0x43c940
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x1e], 0xedebeb7a
mov word [ebp - 0x1a], 0
mov esi, 0x1e
mov edx, 0xcc1c23e1
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [ebp + edx + 0x33e3dc01]
mov ecx, esi
xor ecx, edx
and ecx, edi
xor ecx, edx
neg ecx
lea edi, [ecx + ecx]
and edi, 0x12
xor ecx, 0xf6
sub ecx, edi
add cl, 2
mov byte [ebp + edx + 0x33e3dc01], cl
dec esi
inc edx
cmp esi, 0x18
jne 0x43c970
test eax, eax
je 0x43c9c0
mov ecx, dword [ebp - 0x1e]
mov dword [ebp - 0x10], ecx
cmp eax, 4
jae 0x43c9d0
mov ecx, 0x3228f3d1
jmp 0x43ca12
mov edx, 0x3228f3d1
jmp 0x43ca40
mov edx, ebx
and edx, 0xfffffffc
mov ecx, 0x3228f3d1
mov esi, dword [ebp - 0x14]
nop
nop
nop
movsx edi, byte [esi]
xor edi, ecx
imul edi, dword [ebp - 0x10]
movsx ecx, byte [esi + 1]
xor ecx, edi
imul ecx, dword [ebp - 0x10]
movsx edi, byte [esi + 2]
xor edi, ecx
imul edi, dword [ebp - 0x10]
movsx ecx, byte [esi + 3]
add esi, 4
xor ecx, edi
imul ecx, dword [ebp - 0x10]
add edx, 0xfffffffc
jne 0x43c9e0
mov dword [ebp - 0x14], esi
mov edx, ecx
test al, 3
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
je 0x43ca40
and ebx, 3
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx edx, byte [esi + eax]
xor edx, ecx
imul edx, edi
inc eax
mov ecx, edx
cmp ebx, eax
jne 0x43ca30
xor eax, eax
cmp edx, dword [ebp + 0xc]
setne al
jmp dword [eax*4 + 0x4475ac]
mov ecx, dword [ebp - 0x24]
inc ecx
xor eax, eax
cmp ecx, dword [ebp - 0x3c]
setb al
mov edi, dword [ebp + 8]
jmp dword [eax*4 + 0x4475a4]
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x24]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + eax*4]
xor edx, edx
mov ecx, eax
sub ecx, dword [ebp - 0x34]
setae dl
mov esi, dword [ebp + 8]
jmp dword [edx*4 + 0x4475b4]
jmp dword [0x4475c8]
xor edx, edx
cmp ecx, dword [ebp - 0x28]
setb dl
jmp dword [edx*4 + 0x4475cc]
add esi, eax
xor ecx, ecx
mov eax, esi
jmp dword [ecx*4 + 0x4475d4]
mov ecx, dword [ebp - 0x38]
jmp dword [ecx*4 + 0x4475d4]
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [edi + 0x3c]
mov eax, dword [edi + ecx]
mov dword [esp + 2], 0xc3c28490
mov byte [esp + 6], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
add bl, 0xc0
xor byte [esp + edx + 2], bl
inc edx
cmp edx, 5
jne case.default.0x43cb6c
mov edx, dword [esp + 2]
xor ebx, ebx
cmp eax, edx
setne bl
xor eax, eax
jmp dword [ebx*4 + 0x4475e4]
mov edx, dword [edi + ecx + 0x80]
cmp dword [edi + ecx + 0x84], 0
sete cl
test edx, edx
sete ch
or ch, cl
movzx ecx, ch
jmp dword [ecx*4 + 0x4475ec]
mov ecx, dword [edi + edx + 0x10]
add ecx, edi
mov dword [esp + 0xc], ecx
mov esi, dword [edi + edx]
add esi, edi
add edi, 2
mov ebx, dword [case.0x43c848.37]
mov ecx, dword [esi]
mov edx, ecx
shr edx, 0x1f
mov dword [esp + 0x10], edi
mov dword [esp + 8], ebx
jmp dword [edx*4 + 0x447604]
xor edx, edx
test ecx, ecx
setne dl
xor eax, eax
jmp dword [edx*4 + 0x44760c]
mov dword [esp + 0x14], esi
add ecx, edi
mov edx, 0xffffffff
xor eax, eax
nop
nop
nop
mov ebp, eax
cmp byte [ecx + edx + 1], 0
lea edx, [edx + 1]
lea eax, [eax + 1]
jne 0x43cbf0
mov dword [esp + 2], 0xedebeb7a
mov word [esp + 6], 0
mov edi, 0x1e
mov esi, 0xcc1c23e1
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi + 0x33e3dc21]
mov eax, edi
xor eax, esi
and eax, ebx
xor eax, esi
neg eax
lea ebx, [eax + eax]
and ebx, 0x12
xor eax, 0xf6
sub eax, ebx
add al, 2
mov byte [esp + esi + 0x33e3dc21], al
dec edi
inc esi
cmp edi, 0x18
jne 0x43cc20
mov eax, 0x3228f3d1
test edx, edx
je 0x43ccc0
mov edi, dword [esp + 2]
mov esi, 0x3228f3d1
cmp edx, 4
jb 0x43cc9b
mov eax, ebp
and eax, 0xfffffffc
nop
nop
nop
nop
nop
movsx ebx, byte [ecx]
xor ebx, esi
imul ebx, edi
movsx esi, byte [ecx + 1]
xor esi, ebx
imul esi, edi
movsx ebx, byte [ecx + 2]
xor ebx, esi
imul ebx, edi
movsx esi, byte [ecx + 3]
add ecx, 4
xor esi, ebx
imul esi, edi
add eax, 0xfffffffc
jne 0x43cc70
mov eax, esi
test dl, 3
je 0x43ccc0
and ebp, 3
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [ecx + edx]
xor eax, esi
imul eax, edi
inc edx
mov esi, eax
cmp ebp, edx
jne 0x43ccb0
xor ecx, ecx
cmp eax, dword [esp + 0x34]
sete cl
jmp dword [ecx*4 + 0x447614]
mov esi, dword [esp + 0x14]
add esi, 4
add dword [esp + 0xc], 4
mov ecx, 1
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
jmp 0x43cd00
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
xor ecx, ecx
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ebx
jmp dword [ecx*4 + 0x44762c]
mov ecx, dword [esi]
mov edx, ecx
shr edx, 0x1f
mov dword [esp + 0x18], eax
xor eax, eax
jmp dword [edx*4 + 0x447604]
xor eax, eax
jmp dword [0x4475fc]
mov ecx, dword [case.0x43c848.20]
nop
nop
jmp ecx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x3c]
lea edx, [ecx + eax]
mov eax, dword [ecx + eax]
mov dword [esp + 6], 0xdcdb9f89
mov word [esp + 0xa], 0
mov ecx, dword [case.0x43c848.49]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ebx, ebx
cmp ebx, 5
ja 0x43ce37
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebx + 6]
mov esi, 0xb7444aae
sub esi, ebx
and esi, 0xb1000006
mov ecx, 0x7444aae
sub ecx, ebx
and ecx, 0x6444aa9
or ecx, esi
mov esi, edi
xor esi, 0x56
mov ebp, ecx
xor ebp, 0xa9
xor edi, 9
and edi, ebp
xor ecx, 0x56
and ecx, esi
or ecx, edi
add cl, 0x78
mov byte [esp + ebx + 6], cl
inc ebx
cmp ebx, 5
jbe 0x43cdf0
mov ecx, dword [esp + 6]
xor ebx, ebx
cmp eax, ecx
setne bl
xor eax, eax
jmp dword [ebx*4 + 0x44765c]
movzx eax, word [edx + 0x14]
lea esi, [edx + eax]
add esi, 0x18
movzx ecx, word [edx + 6]
xor ebp, ebp
xor eax, eax
mov word [esp], cx
cmp bp, cx
setb al
mov dword [esp + 0xc], 1
jmp dword [eax*4 + 0x447664]
mov ecx, 8
mov edi, dword [esp + 0x28]
mov eax, esi
nop
nop
nop
nop
nop
sub ecx, 1
jb 0x43ceb0
movzx edx, byte [edi]
inc edi
movzx ebx, byte [eax]
inc eax
cmp dl, bl
je 0x43ce90
mov eax, ebx
xor eax, edx
not ebx
and ebx, edx
add ebx, ebx
sub ebx, eax
jmp 0x43ceb2
xor ebx, ebx
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x44766c]
add esi, 0x28
inc ebp
xor eax, eax
cmp bp, word [esp]
setb al
jmp dword [eax*4 + 0x447664]
xor eax, eax
mov ecx, dword [esp + 0x2c]
test ecx, ecx
setne al
jmp dword [eax*4 + 0x447674]
mov al, 1
mov ecx, dword [esp + 0xc]
jmp dword [ecx*4 + 0x4476b4]
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret