Function at 0x43dad0
Capabilities:
Encode data using xor

Disassembly:
nop
nop
mov word [ebp], cx
add ebp, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4291b0
mov word [ebp], 0
movzx ecx, word [esp + 0xe]
test cx, cx
je 0x4291f2
lea edx, [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], cx
add ebp, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4291e0
mov word [ebp], 0
cmp dword [esp + 0x58], 0xfffffff7
jge 0x429210
mov eax, 0xffffffff
jmp 0x429217
mov eax, dword [esp + 0x7c]
add eax, 0x12
push eax
call fcn.00408bd0
add esp, 4
mov ebp, eax
mov dword [esp + 0xe], 0xed00ebc5
mov dword [esp + 0x12], 0x9106ef0b
mov dword [esp + 0x16], 0x95789377
mov dword [esp + 0x1a], 0x997a9772
mov word [esp + 0x1e], 0x9b9a
mov eax, 0x23bfc23a
cmp al, dl
invalid
invalid
nop
nop
cmp al, dl
mov edi, 0xf909023
mov dh, 0x8c
add al, 0xd4
cmp eax, 0xca89dc40
movzx ecx, byte [esp + eax - 0x23bfc22c]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
leave
add ecx, eax
add cl, 0x30
mov byte [esp + eax - 0x23bfc22c], cl
inc eax
cmp eax, 0x23bfc24c
jne 0x429250
movzx ecx, word [esi]
mov eax, ebp
test cx, cx
je 0x4292a1
add esi, 2
mov eax, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x429290
mov word [eax], 0
movzx ecx, word [esp + 0xe]
test cx, cx
je 0x4292d3
lea edx, [esp + 0x10]
mov esi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4292c0
jmp 0x4292d7
mov esi, dword [esp + 4]
mov word [eax], 0
mov dword [esp + 0xe], 0x11102fc4
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xde
xor cl, byte [esp + eax + 0xe]
add cl, 0x10
mov byte [esp + eax + 0xe], cl
inc eax
cmp eax, 4
jne 0x4292f0
lea eax, [esp + 0xe]
push 0
push 0
push 0xc00000
push eax
push esi
push ebp
push dword [esp + 0x11c]
call fcn.00421440
add esp, 0x1c
mov ebx, eax
jmp dword [0x444c9c]
cmp ecx, 0x3d
mov dword [esp + 0x40], eax
mov dword [esp + 4], edx
je 0x429489
cmp ecx, 0x2e
jne 0x42948a
dec esi
mov dword [esp + 0x68], esi
lea eax, [esi + 1]
push eax
call fcn.00408bd0
add esp, 4
mov dword [esp + 8], eax
cmp dword [esp + 4], 0
je 0x429594
xor ebp, ebp
mov esi, 2
jmp 0x4294d2
mov ebp, ebx
lea eax, [esi + 4]
add esi, 2
cmp esi, ecx
mov esi, eax
jae 0x429594
mov edi, dword [esp + 0x40]
movzx eax, byte [edi + esi - 2]
push eax
call fcn.0041d3f0
add esp, 4
mov ebx, eax
movzx eax, byte [edi + esi - 1]
push eax
call fcn.0041d3f0
mov ecx, dword [esp + 8]
add esp, 4
shl bl, 2
mov ah, al
shr ah, 4
and ah, 3
or ah, bl
lea ebx, [ebp + 1]
mov edx, dword [esp + 8]
mov dword [esp + 0x44], ebp
mov byte [edx + ebp], ah
cmp esi, ecx
jae 0x4294c0
mov byte [esp + 3], al
movzx eax, byte [edi + esi]
push eax
call fcn.0041d3f0
mov ecx, dword [esp + 8]
add esp, 4
cmp al, 0x40
mov ebp, ebx
je 0x4294c2
movzx edx, byte [esp + 3]
shl dl, 4
mov ebx, eax
shr al, 2
and al, 0xf
or al, dl
mov edi, dword [esp + 0x44]
lea ebp, [edi + 2]
mov edx, dword [esp + 8]
mov byte [edx + edi + 1], al
lea eax, [esi + 1]
cmp eax, ecx
jae 0x4294c2
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + esi + 1]
push eax
call fcn.0041d3f0
mov ecx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x4294c2
shl bl, 6
add al, bl
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x44]
mov byte [edx + ebp + 2], al
add ebp, 3
jmp 0x4294c2
mov ecx, 0xcccccccd
mov eax, dword [esp + 0x68]
mul ecx
shr edx, 2
mov dword [esp + 0x80], edx
mov eax, dword [esp + 8]
add eax, 5
mov dword [esp + 0x84], eax
mov dword [esp + 0x4c], 0
inc esp
and al, 0x4c
add byte [eax], al
add byte [eax], al
inc esp
and al, 0x4c
add byte [eax], al
add byte [eax], al
mov dword [esp + 0x50], 0
push 0x8b2600cb
push dword [0x449588]
call fcn.0043dad0
add esp, 8
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x80]
push ecx
push 0
push 0
push 0
push 0
add byte [edx], ch
add byte [edx], ch
push edx
call eax
jmp 0x429660
mov eax, dword [esp + 0x68]
add eax, 0xfffffffb
mov dword [esp + 0x80], eax
mov ebp, dword [esp + 8]
mov eax, ebp
add eax, 5
mov dword [esp + 0x84], eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
push 0x8b2600cb
push dword [0x449588]
call fcn.0043dad0
add esp, 8
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x80]
push ecx
push 0
push 0
push 0
push 0
push 0
push edx
call eax
jmp dword [0x444c38]
push dword [esp + 0x5c]
je 0x429687
pop esp
call fcn.00402680
add esp, 4
mov dword [esp + 0xe], 0x49467b68
mov dword [esp + 0x12], 0x7a7d6579
mov dword [esp + 0x16], 0x417f4531
mov dword [esp + 0x1a], 0x72756d71
sbb dh, byte [ecx + 0x6d]
jne 0x4296fe
mov dword [esp + 0x1e], 0x41767c42
mov word [esp + 0x22], 0x557e
mov byte [esp + 0x24], 0xdd
lea ecx, [esp + 0xe]
mov edx, 0x784a0970
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [ecx]
mov edi, esi
and edi, 0xffffffaa
xor edi, 0xfcd6deaa
mov ebx, esi
xor ebx, 0xfcd6deaa
or esi, 0x55
and esi, ebx
or esi, edi
mov ebx, edx
and ebx, 0x7842082a
lea edi, [edx - 0x78400000]
and edi, 0x80155
or edi, ebx
xor edi, 0x3292155
mov ebx, esi
and ebx, edi
add ebx, ebx
sub edi, ebx
add edi, esi
mov esi, edi
and esi, 7
xor edi, 0x87
lea ebx, [edi + esi*2]
inc bl
mov byte [ecx], bl
inc ecx
dec edx
cmp edx, 0x784a0959
jne 0x4296b0
lea ecx, [esp + 0xe]
push ecx
push eax
call fcn.004029c0
add esp, 8
mov edx, 0xffffffff
mov esi, 0xfffffffd
nop
nop
nop
nop
nop
nop
nop
nop
nop
invalid
mov ecx, edx
add esi, 3
cmp byte [eax + edx + 1], 0
lea edx, [edx + 1]
jne 0x429730
shr esi, 2
movzx ecx, byte [eax + edx - 1]
out dx, al
add cl, byte [edi]
mov dh, 0x4c
adc bh, bh
cmp ecx, 0x3d
je 0x429751
cmp ecx, 0x2e
jne 0x429752
dec esi
movzx ecx, byte [eax + edx - 2]
cmp ecx, 0x3d
mov dword [esp + 0x40], eax
mov dword [esp + 4], edx
je 0x429769
cmp ecx, 0x2e
jne 0x42976a
dec esi
mov dword [esp + 0x68], esi
lea eax, [esi + 1]
push eax
call fcn.00408bd0
add esp, 4
mov dword [esp + 8], eax
cmp dword [esp + 4], 0
je case.0x43db16.6
xor edi, edi
mov ebp, 2
jmp 0x4297b2
mov edi, ebx
lea eax, [ebp + 4]
add ebp, 2
cmp ebp, edx
mov ebp, eax
jae case.0x43db16.6
mov esi, dword [esp + 0x40]
movzx eax, byte [esi + ebp - 2]
push eax
call fcn.0041d3f0
add esp, 4
mov ebx, eax
movzx eax, byte [esi + ebp - 1]
push eax
call fcn.0041d3f0
mov edx, dword [esp + 8]
add esp, 4
shl bl, 2
mov ah, al
shr ah, 4
and ah, 3
or ah, bl
lea ebx, [edi + 1]
mov ecx, dword [esp + 8]
mov dword [esp + 0x44], edi
mov byte [ecx + edi], ah
cmp ebp, edx
jae 0x4297a0
mov byte [esp + 3], al
movzx eax, byte [esi + ebp]
push eax
call fcn.0041d3f0
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
mov edi, ebx
je 0x4297a2
movzx ecx, byte [esp + 3]
shl cl, 4
mov ebx, eax
shr al, 2
and al, 0xf
or al, cl
mov esi, dword [esp + 0x44]
lea edi, [esi + 2]
mov ecx, dword [esp + 8]
mov byte [ecx + esi + 1], al
lea eax, [ebp + 1]
cmp eax, edx
jae 0x4297a2
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + ebp + 1]
push eax
call fcn.0041d3f0
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x4297a2
shl bl, 6
add al, bl
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0x44]
mov byte [ecx + edi + 2], al
add edi, 3
jmp 0x4297a2
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov ebx, dword [esp + 0x48]
movzx eax, word [ebx]
mov dword [esp + 8], 0xa2a10a12
mov edx, 0xe8
mov esi, 0x17
movzx edi, byte [esp + esi - 0xf]
mov ecx, edx
xor ecx, esi
and ecx, edi
xor ecx, esi
add cl, 0x48
mov byte [esp + esi - 0xf], cl
dec edx
inc esi
cmp esi, 0x1b
jne case.default.0x43db16
xor ecx, ecx
cmp dword [esp + 8], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x446d74]
xchg edi, eax
inc edx
add byte [eax - 0x69], al
inc edx
add byte [eax - 0x69], al
inc edx
add byte [ebp - 0x6a], al
inc edx
add byte [ecx - 0x6a], ah
inc edx
add bh, al
xchg ebp, eax
inc edx
add ch, ch
xchg ebp, eax
inc edx
add byte [eax], al
xchg esi, eax
inc edx
add byte [edi - 0x6c], dh
inc edx
add byte [esi], ch
xchg esi, eax
inc edx
add byte [eax - 0x12ffbd6b], bh
xchg ebp, eax
inc edx
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add ch, ch
xchg ebp, eax
inc edx
add byte [ecx], al
add byte [eax], al
add bl, dh
xchg ebp, eax
inc edx
add byte [ecx - 0x6a], ah
inc edx
add byte [edi], al
xchg edi, eax
inc edx
add byte [eax], al
xchg ebx, eax
inc edx
add byte [edx - 0x6e], cl
inc edx
add byte [edx - 0x6e], ah
inc edx
add byte [eax - 0x6e], ah
inc edx
add byte [eax - 0x6e], ah
inc edx
add byte [edx - 0x6e], ah
inc edx
add byte [eax - 0x6e], ah
inc edx
add byte [esi - 0x48ffbd6f], ch
xchg ecx, eax
inc edx
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [esi + 0x11], ah
xor al, 1
rcl dword [0x15f50134], cl
xor al, 1
xor dword [ebx], esi
xor al, 1
out 0x33, al
xor al, 1
sti
xor esi, dword [ecx + eax]
adc esi, dword [esp + esi]
add dword [ebx], edx
xor al, 0x34
add ebx, esp
sub al, 0x34
add ebx, esp
sub al, 0x34
add dword [eax + ebp], esp
xor al, 1
push eax
sub dh, byte [ecx + eax]
jb 0x446e4c
xor al, 1
pushal
push ss
xor al, 1
or dl, byte [esi]
xor al, 1
pushal
push ss
xor al, 1
mov bh, 0x29
xor al, 1
mov gs, word [ebx]
xor al, 1
mov word [ebx], gs
xor al, 1
sbb ch, byte [0x2c860134]
xor al, 1
invalid
invalid