Function at 0x43ee56
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov dword [esp + 4], 0xb9babb54
mov word [esp + 8], 0
mov eax, 0xdf
xor ecx, ecx
nop
nop
nop
mov esi, ecx
and esi, 0xf
mov edx, eax
and edx, 0xb0
or edx, esi
xor dl, byte [esp + eax - 0xdb]
xor dl, 0x4f
add dl, 0xa5
mov byte [esp + eax - 0xdb], dl
inc eax
dec ecx
cmp eax, 0xe5
jne case.default.0x43eaad
mov eax, dword [esp + 4]
mov eax, dword fs:[eax]
xor ecx, ecx
cmp dword [esp + 0x24], 0
sete cl
jmp dword [ecx*4 + 0x449698]
mov edx, dword [eax + 0xc]
mov esi, dword [edx + 0xc]
add edx, 0xc
mov ecx, dword [case.0x43eaad.4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
mov dword [esp], 0
xor ecx, ecx
cmp esi, edx
setne cl
mov dword [esp + 0xc], edx
jmp dword [ecx*4 + 0x4496b0]
jmp dword [edi*4 + 0x4496c8]
mov esi, dword [esi]
xor ecx, ecx
cmp esi, edx
setne cl
jmp dword [ecx*4 + 0x4496b0]
mov ebx, dword [esi + 0x30]
xor eax, eax
test ebx, ebx
setne al
mov edi, 1
jmp dword [eax*4 + 0x4496b8]
mov ebp, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, word [ebp]
lea edx, [ecx - 0x41]
cmp dx, 0x1a
jae 0x43eb40
or ecx, 0x20
movzx edx, word [ebx]
lea eax, [edx - 0x41]
cmp ax, 0x1a
jae 0x43eb4f
or edx, 0x20
test cx, cx
je 0x43eb5f
add ebp, 2
add ebx, 2
cmp cx, dx
je 0x43eb30
xor eax, eax
cmp cx, dx
sete al
mov edx, dword [esp + 0xc]
jmp dword [eax*4 + 0x4496c0]
mov eax, dword [esi + 0x18]
mov dword [esp], eax
xor ecx, ecx
jmp dword [ecx*4 + 0x4496c8]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov eax, dword [esp]
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [eax + 8]
mov eax, dword [case.0x43eaad.13]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
movzx eax, word [esi]
mov dword [esp], 0x93927b45
mov edx, 0x5c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx - 0x5c]
mov ebx, ecx
and ebx, edx
add bl, bl
sub cl, bl
movzx ecx, cl
add ecx, edx
add cl, 0x34
mov byte [esp + edx - 0x5c], cl
inc edx
cmp edx, 0x60
jne case.default.0x43ec59
xor ecx, ecx
cmp dword [esp], eax
sete cl
xor edx, edx
jmp dword [ecx*4 + 0x4496e8]
xor ecx, ecx
test edx, edx
sete cl
jmp dword [ecx*4 + 0x449710]
jmp 0x43ed38
mov ecx, dword [esi + 0x3c]
mov eax, dword [esi + ecx]
mov dword [esp + 8], eax
mov dword [esp], 0x2126d8d4
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov edi, esp
mov ebx, 0x9c2fb706
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [edi]
mov eax, ebx
or eax, edx
lea ebp, [ebx + 0x63d04900]
and ebp, edx
not eax
or eax, ebp
mov edx, eax
not edx
mov ebp, eax
and ebp, 0xcee9322
xor eax, 0xcee9322
lea eax, [eax + ebp*2]
mov ebp, eax
and edx, 1
add edx, eax
xor eax, 0xfe
or ebp, 1
and ebp, eax
add edx, ebp
mov byte [edi], dl
inc edi
dec ebx
cmp ebx, 0x9c2fb6ff
jne 0x43eca0
xor eax, eax
mov edx, dword [esp + 8]
cmp edx, dword [esp]
sete al
jmp dword [eax*4 + 0x4496f0]
mov eax, dword [case.0x43ec59.6]
nop
nop
jmp eax
mov ecx, 1
xor edx, edx
jmp dword [ecx*4 + 0x449708]
mov eax, dword [esi + ecx + 0x50]
mov edx, 1
xor ecx, ecx
jmp dword [ecx*4 + 0x449708]
xor ecx, ecx
xor edx, edx
test ecx, 0
sete dl
jmp dword [edx*4 + 0x449710]
xor eax, eax
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [edi]
xor ebx, ebx
cmp edi, edx
setne bl
jmp dword [ebx*4 + 0x449720]
jmp esi
mov eax, dword [edi + 0x30]
xor ebx, ebx
jmp dword [ebx*4 + 0x449740]
mov dword [eax], 0xc3c2c110
mov word [eax + 4], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
or dl, 0xb0
xor dl, byte [eax + ecx]
add dl, 0x90
mov byte [eax + ecx], dl
mov edx, ecx
or edx, 0xd249eadd
and ecx, 5
add ecx, edx
add ecx, 0x2db61524
cmp ecx, 6
jb case.default.0x43eea4
mov eax, dword [eax]
mov eax, dword fs:[eax]
xor ecx, ecx
cmp dword [ebp + 8], 0
sete cl
jmp dword [ecx*4 + 0x449758]
mov ecx, dword [eax + 0xc]
add ecx, 0xc
mov esi, dword [case.0x43ec59.42]
mov dword [ebp - 0x10], 0
mov eax, dword [ecx]
xor edx, edx
mov dword [ebp - 0x14], ecx
cmp eax, ecx
setne dl
mov ebx, dword [case.0x43ec59.47]
mov ecx, dword [case.0x43ec59.53]
jmp dword [edx*4 + 0x449780]
jmp esi
xor edx, edx
mov edi, dword [ebp + 8]
cmp dword [eax + 0x18], edi
sete dl
jmp dword [edx*4 + 0x449798]
jmp ebx
mov edx, 1
jmp dword [edx*4 + 0x4497b0]
mov edx, dword [eax + 0x28]
mov dword [ebp - 0x10], edx
xor edx, edx
jmp dword [edx*4 + 0x4497b0]
jmp ecx
mov eax, dword [eax]
xor edx, edx
cmp eax, dword [ebp - 0x14]
setne dl
jmp dword [edx*4 + 0x449780]
mov eax, dword [eax + 0x10]
mov ecx, dword [case.0x43ec59.35]
nop
nop
nop
nop
jmp ecx
mov eax, dword [eax + 0x3c]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor edx, edx
cmp ecx, dword [esp + 0xc]
setb dl
jmp dword [edx*4 + 0x4497f8]
add ebp, eax
xor ecx, ecx
mov eax, ebp
jmp dword [ecx*4 + 0x449800]
xor eax, eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
xor ecx, ecx
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 0x28]
jmp dword [ecx*4 + 0x449878]
mov ebx, dword [edi]
mov eax, ebx
xor eax, 0x7fffffff
mov edx, ebx
or edx, 0x80000000
xor ecx, ecx
test edx, eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x449850]
xor ecx, ecx
test ebx, ebx
setne cl
xor eax, eax
mov dword [ebp - 0x20], ebx
jmp dword [ecx*4 + 0x449858]
mov dword [ebp - 0x28], edi
mov eax, dword [ebp + 8]
lea edx, [eax + ebx]
mov dword [ebp - 0x1c], edx
jmp dword [ebp - 0x30]
mov eax, 2
nop
nop
nop
nop
cmp byte [edx + eax], 0
lea eax, [eax + 1]
jne 0x43f290
mov dword [ebp - 0x18], 0xe0e089f
mov dword [ebp - 0x14], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x82
xor cl, byte [ebp + eax - 0x18]
add cl, 0x76
mov byte [ebp + eax - 0x18], cl
inc eax
cmp eax, 8
jne 0x43f2b0
jmp case.0x43ec59.93
mov edi, 0x3205b60c
mov ebx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
jmp dword [0x44986c]
mov eax, dword [ebp + 8]
lea esi, [eax + ebx]
add esi, 2
lea eax, [edx + 2]
mov dword [ebp - 0x10], eax
mov edx, 0xffffffff
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
cmp byte [esi + edx + 1], 0
lea edx, [edx + 1]
lea edi, [edi + 1]
jne 0x43f300
mov dword [ebp - 0x18], 0xe0e089f
mov dword [ebp - 0x14], 0
xor ebx, ebx
nop
mov ecx, ebx
add cl, 0x82
xor cl, byte [ebp + ebx - 0x18]
add cl, 0x76
mov byte [ebp + ebx - 0x18], cl
inc ebx
cmp ebx, 8
jne 0x43f320
test edx, edx
je 0x43f2d0
mov esi, dword [ebp - 0x18]
cmp edx, 4
jae 0x43f350
mov ebx, 0x3205b60c
mov ecx, dword [ebp - 0x10]
jmp 0x43f396
mov dword [ebp - 0x34], eax
mov edi, eax
and edi, 0xfffffffc
mov ebx, 0x3205b60c
mov ecx, dword [ebp - 0x10]
mov eax, esi
mov esi, ecx
movsx ecx, byte [ecx]
xor ecx, ebx
imul ecx, eax
movsx ebx, byte [esi + 1]
xor ebx, ecx
imul ebx, eax
movsx ecx, byte [esi + 2]
xor ecx, ebx
imul ecx, eax
movsx ebx, byte [esi + 3]
add esi, 4
xor ebx, ecx
mov ecx, esi
mov esi, eax
imul ebx, eax
add edi, 0xfffffffc
jne 0x43f360
mov eax, dword [ebp - 0x34]
mov edi, ebx
test dl, 3
je 0x43f2d5
and eax, 3
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx edi, byte [ecx + edx]
xor edi, ebx
imul edi, esi
inc edx
mov ebx, edi
cmp eax, edx
jne 0x43f3b0
jmp 0x43f2d5
xor eax, eax
cmp edi, dword [ebp + 0xc]
sete al
jmp dword [eax*4 + 0x449870]
add dword [ebp - 0x24], 4
mov edi, dword [ebp - 0x28]
add edi, 4
mov ecx, 1
mov eax, dword [ebp - 0x2c]
jmp dword [ecx*4 + 0x449878]
push eax
push eax
mov eax, esp
mov dword [eax], 0xd1ce1503
mov dword [eax + 4], 0
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x2d
xor dl, byte [eax + ecx]
add dl, 0x1f
mov byte [eax + ecx], dl
inc ecx
cmp ecx, 8
jne 0x43f410
push eax
push eax
mov ecx, esp
push eax
mov esi, esp
mov eax, dword [ebp + 8]
movzx edx, word [eax]
mov dword [ecx], 0xd1ce1503
mov dword [ecx + 4], 0
xor ebx, ebx
mov eax, ebx
add al, 0x2d
xor al, byte [ecx + ebx]
add al, 0x1f
mov byte [ecx + ebx], al
inc ebx
cmp ebx, 8
jne 0x43f440
jmp dword [0x449820]
xor eax, eax
cmp dword [ecx], edx
setne al
jmp dword [eax*4 + 0x449828]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x3c]
mov dword [ebp - 0x1c], ecx
mov eax, dword [eax + ecx]
mov dword [ebp - 0x20], eax
mov dword [esi], 0xb18e487c
mov dword [ebp - 0x10], esi
xor esi, esi
mov edi, 0x197db923
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + esi]
lea ebx, [esi - 0x197db923]
lea edx, [eax + eax]
not edx
add edx, eax
and edx, ebx
mov ecx, ebx
and ecx, eax
xor ebx, eax
add ebx, ecx
add ebx, edi
or ebx, edx
mov eax, ebx
not eax
and eax, 0x52
and ebx, 0xad
sub ebx, eax
inc bl
mov eax, dword [ebp - 0x10]
mov byte [eax + esi], bl
inc esi
dec edi
cmp esi, 4
jne case.default.0x43f4df
xor ecx, ecx
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x10]
cmp eax, dword [edx]
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x449840]
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x1c]
mov edx, dword [ecx + esi + 0x80]
cmp dword [ecx + esi + 0x84], 0
sete cl
test edx, edx
sete ch
or ch, cl
movzx ecx, ch
jmp dword [ecx*4 + 0x449848]
mov ecx, dword [ebp + 8]
mov edi, dword [ecx + edx]
add edi, ecx
mov edx, dword [ecx + edx + 0x10]
add edx, ecx
mov dword [ebp - 0x24], edx
mov ebx, dword [edi]
mov edx, ebx
xor edx, 0x7fffffff
mov esi, ebx
or esi, 0x80000000
xor ecx, ecx
test esi, edx
mov edx, dword [case.0x43ec59.93]
mov dword [ebp - 0x30], edx
setne cl
jmp dword [ecx*4 + 0x449850]
mov ecx, dword [case.0x43f4df.0]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [eax + 0x3c]
add ecx, eax
mov dword [ebp - 0x18], ecx
mov eax, dword [ecx]
mov dword [ebp - 0x14], eax
mov dword [edi], 0xf9fa40b4
mov dword [edi + 4], 0
mov esi, 0x100
mov ecx, 0x21bcf2ff
mov dword [ebp - 0x10], edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x10]
movzx edi, byte [eax + ecx - 0x21bcf2ff]
lea edx, [edi + edi]
not edx
add edx, edi
and edx, 0x485bd4ae
mov ebx, edi
not ebx
or ebx, 0xb7a42b51
add edi, ebx
inc edi
or edi, edx
mov edx, ecx
or edx, 0x485bd4ae
lea ebx, [esi + edx]
add ebx, 0xde430c01
mov edx, esi
and edx, 0x151
xor edx, 0x21a42351
or edx, ebx
xor edx, edi
mov edi, edx
lea ebx, [edx + edx]
and ebx, 0xae9e8208
neg ebx
add ebx, edx
add ebx, 0x574f4104
xor edx, 0xa8b0befb
or edi, 0x574f4104
and edi, edx
mov edx, edi
and edx, 0xfffffffd
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
xor eax, 2
imul eax, edx
add edi, eax
mov eax, edi
and eax, ebx
xor edi, ebx
lea eax, [edi + eax*2]
mov edi, dword [ebp - 0x10]
inc al
mov byte [edi + ecx - 0x21bcf2ff], al
dec esi
inc ecx
cmp esi, 0xf8
jne case.default.0x43f6b4
xor ecx, ecx
mov eax, dword [ebp - 0x14]
cmp eax, dword [edi]
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x449898]
mov ecx, dword [ebp - 0x18]
movzx eax, word [ecx + 0x14]
lea edx, [ecx + eax]
add edx, 0x18
movzx ecx, word [ecx + 6]
xor ebx, ebx
xor eax, eax
mov word [ebp - 0x18], cx
cmp bx, cx
setb al
mov dword [ebp - 0x14], 1
jmp dword [eax*4 + 0x4498a0]
xor eax, eax
jmp dword [0x449894]
mov ecx, dword [case.0x43f778.19]
nop
nop
jmp ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
xor ecx, ecx
test eax, 0
sete cl
jmp dword [ecx*4 + 0x4498a8]
mov edx, dword [ebp - 0x10]
add edx, 0x28
mov eax, ebx
xor eax, 1
and ebx, 1
lea ebx, [eax + ebx*2]
xor eax, eax
cmp bx, word [ebp - 0x18]
setb al
jmp dword [eax*4 + 0x4498a0]
mov esi, 8
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x10], edx
mov eax, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sub esi, 1
jb 0x43f710
movzx ecx, byte [edi]
inc edi
movzx edx, byte [eax]
inc eax
cmp cl, dl
je case.default.0x43f778
xor eax, eax
sub ecx, edx
sete al
jmp dword [eax*4 + 0x4498a8]
xor eax, eax
mov ecx, dword [ebp + 0x10]
test ecx, ecx
setne al
mov edx, dword [ebp - 0x10]
jmp dword [eax*4 + 0x4498b0]
xor eax, eax
cmp dword [ebp + 0x14], 0
setne al
jmp dword [eax*4 + 0x4498b8]
mov eax, dword [ebp + 8]
add eax, dword [edx + 0xc]
mov dword [ecx], eax
xor eax, eax
cmp dword [ebp + 0x14], 0
setne al
jmp dword [eax*4 + 0x4498b8]
mov eax, dword [edx + 0x10]
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x14], 0
jmp dword [0x4498cc]
mov eax, dword [case.0x43f778.12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov al, 1
mov ecx, dword [ebp - 0x14]
jmp dword [ecx*4 + 0x4498e0]
xor eax, eax
jmp case.0x43f6b4.2
ljmp 0x43:0xeb810043
in eax, dx
inc ebx
add byte [ebx - 0x14], dh
inc ebx
add cl, bh
in al, dx
inc ebx
add byte [eax], dl
in eax, dx
inc ebx
add byte [eax], al
in eax, dx
inc ebx
add byte [eax], al
in eax, dx
inc ebx
add byte [eax], al
in eax, dx
inc ebx
add byte [edx], al
in eax, dx
inc ebx
add byte [eax - 0x14], ah
inc ebx
add byte [edx], ah
in eax, dx
inc ebx
add byte [esi - 0x14], ch
inc ebx
add byte [esi], dh
in eax, dx
inc ebx
add byte [edx - 0x3fffbc13], ah
in eax, dx
inc ebx
add byte [esi], ch
out dx, al
inc ebx
add byte [esi + ebp*8], cl
inc ebx
add al, dh
in eax, dx
inc ebx
add byte [eax], ah
out dx, al
inc ebx
add byte [eax], ah
out dx, al
inc ebx
add byte [eax], ah
out dx, al
inc ebx
add byte [eax], ah
out dx, al
inc ebx
add byte [edx], ah
out dx, al
inc ebx
add byte [esi], ch
out dx, al
inc ebx
add ah, bh
in eax, dx
inc ebx
add byte [eax - 0x12], dl
inc ebx
add byte [eax - 0x12], dl
inc ebx
add byte [esi - 0x12], dl
inc ebx
add byte [eax - 0x12], dl
inc ebx
add byte [ebx + 0x330043ee], ch
out dx, al
inc ebx
add byte [ebx], dh
out dx, al
inc ebx
add byte [ebx], dh
out dx, eax
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ebx], dh
out dx, eax
inc ebx
add byte [eax - 0x11], al
inc ebx
add byte [eax - 0x11], al
inc ebx
add byte [edx - 0x11], al
inc ebx
add byte [eax - 0x11], al
inc ebx
add byte [eax - 0x11], cl
inc ebx
add al, ah
out dx, al
inc ebx
add al, ah
out dx, al
inc ebx
add al, ah
out dx, al
inc ebx
add al, ah
out dx, al
inc ebx
add dl, ah
out dx, al
inc ebx
add byte [eax], al
out dx, eax
inc ebx
add byte [esi], cl
out dx, eax
inc ebx
add byte [eax], al
out dx, eax
inc ebx
add byte [eax], al
out dx, eax
inc ebx
add byte [edx], al
out dx, eax
inc ebx
add byte [eax], al
out dx, eax
inc ebx
add byte [eax - 0x11], cl
inc ebx
add byte [eax], ah
out dx, eax
inc ebx
add byte [eax], ah
out dx, eax
inc ebx
add byte [eax], ah
out dx, eax
inc ebx
add byte [edx], ah
out dx, eax
inc ebx
add byte [eax], ah
out dx, eax
inc ebx
add bh, ch
out dx, eax
inc ebx
add byte [edx], dl
inc ebx
add byte [0xfe0043f0], dh
int1
inc ebx
add byte [ebx - 0x10], dl
inc ebx
add dh, bh
int1
inc ebx
add cl, dh
int1
inc ebx
add byte [eax - 0x50ffbc10], ah
int1
inc ebx
add byte [eax - 0x1bffbc0f], dl
int1
inc ebx
add ah, dl
int1
inc ebx
add ah, ah
int1
inc ebx
add cl, dh
int1
inc ebx
add dh, bh
int1
inc ebx
add ah, bh
int1
inc ebx
add byte [eax], dl
inc ebx
add byte [eax], dl
inc ebx
add byte [eax], dl
inc ebx
add byte [edx], dl
inc ebx
add byte [esp + esi*8], ah
inc ebx
add al, bh
inc ebx
add byte [eax - 0xc], bl
inc ebx
add al, bh
inc ebx
add byte [esi - 0xc], ah
inc ebx
add byte [ecx - 0xb], cl
inc ebx
add byte [eax - 0xb], ah
inc ebx
add byte [eax - 0xb], ah
inc ebx
add byte [edx - 0xb], ah
inc ebx
add byte [eax - 0xb], ah
inc ebx
add dh, ah
hlt