Function at 0x43b525
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x290
mov edx, dword [esp + 0x2b0]
mov dword [esp + 0x77], 0xe48040
mov dword [esp + 0x74], 0x4010ec83
mov dword [esp + 0x70], 0x48e78948
mov dword [esp + 0x6c], 0xce8948fc
lea edi, [esp + 0x90]
lea eax, [esp + 0x6c]
mov ecx, 3
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x9c]
lea eax, [esp + 0x78]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
movzx eax, byte [esp + 0x7a]
mov byte [esp + 0x9e], al
mov eax, edx
mov esi, edx
cmp edx, 4
jb 0x43b4f4
mov esi, 4
lea edx, [esp + 0x9f]
test eax, eax
je 0x43b737
xor eax, eax
lea ebp, [esp + 4]
jmp 0x43b519
inc eax
cmp eax, esi
je 0x43b6cd
cmp eax, 3
ja case.default.0x43b51e
jmp dword [eax*4 + 0x43f6c8]
mov dword [esp + 4], 0x11092cc
mov byte [esp + 8], 0
mov ecx, 0x41
mov edi, 0xbe
nop
nop
nop
nop
movzx ebp, byte [esp + ecx - 0x3d]
mov ebx, edi
xor ebx, ecx
and ebx, ebp
xor ebx, ecx
add bl, 0xbb
mov byte [esp + ecx - 0x3d], bl
inc ecx
dec edi
cmp ecx, 0x46
jne 0x43b540
lea ebp, [esp + 4]
mov ebx, ebp
mov edi, edx
xor ecx, ecx
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
mov ebx, ebp
mov ecx, 1
mov edi, edx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 6]
mov byte [edx + 2], cl
add edx, 3
jmp case.default.0x43b51e
mov dword [esp + 4], 0x61b8e2a0
mov byte [esp + 8], 0x70
mov dword [esp + 9], 0
mov ecx, 0x15
mov edi, 0xea
nop
movzx ebp, byte [esp + ecx - 0x11]
mov ebx, edi
xor ebx, ecx
and ebx, ebp
xor ebx, ecx
add bl, 0x97
mov byte [esp + ecx - 0x11], bl
inc ecx
dec edi
cmp ecx, 0x1e
jne 0x43b5b0
lea ebp, [esp + 4]
mov ebx, ebp
mov ecx, 1
mov edi, edx
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
add edx, 4
lea ebx, [esp + 8]
xor ecx, ecx
mov edi, edx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
jmp case.default.0x43b51e
mov dword [esp + 4], 0xbb440a44
mov byte [esp + 8], 0xac
lea ecx, [esp + 8]
mov byte [ecx + 3], 0
mov word [ecx + 1], 0
xor ecx, ecx
nop
nop
nop
mov ebx, ecx
add bl, 0xdc
xor bl, byte [esp + ecx + 4]
add bl, 0xb4
mov byte [esp + ecx + 4], bl
inc ecx
cmp ecx, 8
jne 0x43b620
mov ebx, ebp
mov ecx, 1
mov edi, edx
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
add edx, 4
lea ebx, [esp + 8]
xor ecx, ecx
mov edi, edx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
jmp case.default.0x43b51e
mov dword [esp + 4], 0x1d086bc
mov byte [esp + 8], pe_nt_image_headers32
mov dword [esp + 9], 0
mov ecx, 0x8b595ebf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x74a6a145]
xor ebx, ecx
mov edi, ebx
and edi, 1
or ebx, 1
add ebx, edi
add bl, 0x44
mov byte [esp + ecx + 0x74a6a145], bl
inc ecx
cmp ecx, 0x8b595ec8
jne 0x43b680
mov ebx, ebp
mov ecx, 1
mov edi, edx
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
add edx, 4
lea ebx, [esp + 8]
mov edi, edx
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
jmp case.default.0x43b51e
mov ecx, dword [esp + 0x2b0]
cmp ecx, 3
jbe 0x43b737
mov eax, ecx
xor eax, 0xfffffffe
or ecx, 1
test ecx, eax
je 0x43b708
mov eax, 0x43fbe2
mov esi, 0x43fbe2
xor ecx, ecx
mov edi, edx
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, 1
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
add edx, 2
mov ebp, dword [esp + 0x2b0]
lea eax, [ebp*8]
mov esi, 0xffffffff
mov edi, 0xffffffff
cmp eax, 0x7ffffffe
ja 0x43bcdf
lea ebx, [ebp - 1]
cmp ebx, 4
jae 0x43b8ec
mov dword [esp + 4], 0x19e67ebc
lea ebp, [esp + 8]
mov byte [esp + 8], 0xf8
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor ecx, ecx
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ebx, eax
add bl, cl
add bl, 0x80
xor bl, byte [esp + eax + 4]
mov bh, 0x84
sub bh, bl
mov byte [esp + eax + 4], bh
inc eax
add cl, 0xfe
cmp eax, 0xa
jne 0x43b760
lea eax, [esp + 4]
mov edi, edx
mov ecx, 1
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea esi, [edx + 4]
mov edi, esi
xor ecx, ecx
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
mov dword [esp + 0x8b], 0xc3fc8948
mov dword [esp + 0x88], 0x48d2ff41
mov dword [esp + 0x7c], 0xba49c031
mov eax, dword [esp + 0x2a4]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x2a8]
mov dword [esp + 0x84], eax
lea eax, [esp + 0x7c]
mov edi, esi
mov ecx, 4
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [edx + 0x14]
lea eax, [esp + 0x8c]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
movzx eax, byte [esp + 0x8e]
mov byte [edx + 0x16], al
lea ecx, [esp + 0x90]
mov eax, ecx
neg eax
lea ebx, [edx + eax]
add ebx, 0x17
sub edx, ecx
add edx, 0x70
mov dword [esp + 0x68], edx
xor eax, eax
mov dword [esp], 0
mov dword [esp + 4], 0x80b0a0d
mov word [esp + 8], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
lea edx, [eax + 0x2fd4d903]
xor edx, ecx
mov ecx, edx
and ecx, 0xd4c0f0
xor edx, 0x10d7c2f0
lea ecx, [edx + ecx*2]
mov edx, ecx
xor edx, 0xfe779af8
and ecx, 0x1886507
add ecx, ecx
sub ecx, edx
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov edx, ecx
and edx, 0x78
xor ecx, 0xf8
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 4], cl
mov ecx, eax
xor ecx, 0xd72f7911
and eax, 1
lea eax, [ecx + eax*2]
add eax, 0x28d086f0
cmp eax, 6
jb 0x43b840
mov esi, dword [esp + 4]
mov eax, dword [0x449860]
test eax, eax
je 0x43ba2b
xor ecx, ecx
mov edx, dword [0x449864]
nop
nop
cmp dword [edx + ecx*8], 0x3e416e49
je 0x43b9fd
inc ecx
cmp eax, ecx
jne 0x43b8c0
jmp 0x43ba2b
lea ebx, [ebp - 1]
cmp ebx, 3
jbe 0x43b737
mov eax, ebp
neg eax
and eax, 8
mov ecx, ebx
and ecx, 0xfffffff7
imul ecx, eax
mov eax, ebx
and eax, 8
mov ebp, ebx
or ebx, 8
imul ebx, eax
add ebx, ecx
cmp ebx, 0x7e
ja 0x43b990
mov dword [esp + 4], 0x63440a48
mov dword [esp + 8], 0x8554
mov ecx, 0xf8b48460
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x74b7ba4]
xor esi, ecx
mov eax, esi
or eax, 0xfe
add eax, esi
not esi
and esi, 1
add eax, esi
add al, 0x21
mov byte [esp + ecx + 0x74b7ba4], al
inc ecx
cmp ecx, 0xf8b48468
jne 0x43b930
lea eax, [esp + 4]
mov edi, edx
mov ecx, 1
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [edx + 4]
lea eax, [esp + 8]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
movzx eax, byte [esp + 8]
mov byte [edx + 4], al
mov byte [edx + 3], bl
add edx, 5
jmp 0x43b8e0
mov dword [esp + 4], 0xf7fcfe40
mov dword [esp + 8], 0xc3727574
mov byte [esp + 0xc], 0x70
lea eax, [esp + 0xc]
mov dword [eax + 4], 0
mov dword [eax + 1], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
add al, 0x3e
xor al, byte [esp + ecx + 4]
add al, 0xca
mov byte [esp + ecx + 4], al
inc ecx
cmp ecx, 0x10
jne 0x43b9c0
lea eax, [esp + 4]
mov edi, edx
mov ecx, 2
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea esi, [edx + 8]
lea eax, [esp + 0xc]
mov edi, esi
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [edx + 3], ebx
mov edx, esi
jmp 0x43b8e0
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x43ba2b
lea ecx, [esp + 0x68]
mov edx, esp
push 0x40
push 0x3000
push ecx
push 0
push edx
push 0xffffffffffffffff
push 0x18
push eax
push dword [0x449868]
call fcn.00439510
add esp, 0x24
mov esi, eax
test esi, esi
js 0x43bcb0
mov dword [esp + 4], 0xb321c4af
mov dword [esp + 8], 0x45d5c2b1
mov dword [esp + 0xc], 0x294e80c1
mov dword [esp + 0x10], 0x55565750
mov dword [esp + 0x14], 0x572aeebc
mov dword [esp + 0x18], 0xf27613ed
mov dword [esp + 0x1c], 0x65a43a0a
mov dword [esp + 0x20], 0x65666755
mov dword [esp + 0x24], 0x6b027dfb
mov dword [esp + 0x28], 0x877e7f78
mov dword [esp + 0x2c], 0x26e01ce0
mov dword [esp + 0x30], 0x946233f5
mov dword [esp + 0x34], 0x114ce896
mov dword [esp + 0x38], 0x29c29208
mov dword [esp + 0x3c], 0x36da3d0d
mov dword [esp + 0x40], 0x6f07ee40
mov dword [esp + 0x44], 0xdd43cbe5
mov dword [esp + 0x48], 0x1d3b1b3c
mov dword [esp + 0x4c], 0xdd8d131c
mov dword [esp + 0x50], 0x5389cf34
mov dword [esp + 0x54], 0x6ef26b33
mov dword [esp + 0x58], 0x112f0f56
lea esi, [esp + 0x5c]
mov word [esp + 0x5c], 0x2308
mov dword [esp + 0x5e], 0
mov eax, 0xf
mov ecx, 0xf0
movzx edi, byte [esp + eax - 0xb]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
add dl, 0xb5
mov byte [esp + eax - 0xb], dl
inc eax
dec ecx
cmp eax, 0x6d
jne 0x43bb00
mov eax, dword [esp]
lea edx, [esp + 4]
mov edi, eax
mov ecx, 0x16
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [eax + 0x58]
xor edx, edx
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
lea edi, [eax + 0x59]
movzx ecx, byte [esp + 0x5c]
mov byte [eax + 0x58], cl
mov ecx, ebx
shr ecx, 2
lea esi, [esp + 0x90]
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, ebx
and ecx, 0xfffffffc
add eax, ecx
add eax, 0x59
lea esi, [esp + ecx]
add esi, 0x90
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov ebp, esi
mov edi, eax
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test bl, 1
je 0x43bb8e
and ebx, 2
movzx ecx, byte [esi + ebx]
mov byte [eax + ebx], cl
mov eax, dword [esp]
mov dword [esp + 4], 0x8f8e8921
mov dword [esp + 8], 0
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx + 4]
mov edi, ecx
or edi, 0xc51b4522
mov ebx, edx
or ebx, 0xc51b4522
add ebx, edi
add ebx, edx
inc ebx
xor ebx, esi
mov esi, ebx
xor esi, 0xab
and ebx, 0x54
add ebx, ebx
sub ebx, esi
inc bl
mov byte [esp + edx + 4], bl
lea esi, [edx + 1]
dec ecx
mov edx, esi
cmp esi, 8
jne 0x43bbb0
mov ecx, dword [esp + 4]
add ecx, eax
push dword [esp + 0x2ac]
push ecx
call eax
mov esi, eax
mov edi, edx
mov dword [esp + 0x64], 0
mov dword [esp + 4], 0x80b0a0d
mov word [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
lea edx, [eax + 0x2fd4d903]
xor edx, ecx
mov ecx, edx
and ecx, 0xd4c0f0
xor edx, 0x10d7c2f0
lea ecx, [edx + ecx*2]
mov edx, ecx
xor edx, 0xfe779af8
and ecx, 0x1886507
add ecx, ecx
sub ecx, edx
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov edx, ecx
and edx, 0x78
xor ecx, 0xf8
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 4], cl
mov ecx, eax
xor ecx, 0xd72f7911
and eax, 1
lea eax, [ecx + eax*2]
add eax, 0x28d086f0
cmp eax, 6
jb 0x43bc20
mov eax, dword [0x449860]
test eax, eax
je 0x43bcdf
mov ecx, dword [esp + 4]
xor edx, edx
mov ebx, dword [0x449864]
nop
nop
nop
nop
nop
nop
cmp dword [ebx + edx*8], 0x16194952
je 0x43bcb7
inc edx
cmp eax, edx
jne 0x43bca0
jmp 0x43bcdf
mov edi, esi
sar edi, 0x1f
jmp 0x43bcdf
mov eax, dword [ebx + edx*8 + 4]
cmp eax, ecx
je 0x43bcdf
lea ecx, [esp + 0x64]
mov edx, esp
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 0x10
push eax
push dword [0x449868]
call fcn.00439510
add esp, 0x1c
mov eax, esi
mov edx, edi
add esp, 0x290
pop esi
pop edi
pop ebx
pop ebp
ret 0x10