Function at 0x100037d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x74
push ebx
push esi
push edi
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x74], ecx
mov byte [ebp - 5], pe_nt_image_headers32
mov dword [ebp - 0x40], 0x803f
movzx ebx, word [0x100110c0]
movzx eax, bx
mov dword [ebp - 0x64], eax
mov eax, 0xfffff89c
mov word [ebp - 0x10], ax
mov eax, 0x1a
mov word [ebp - 0x24], ax
mov al, byte [0x10011026]
mov dword [ebp - 0x54], eax
movzx eax, byte [0x10011026]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x50], 0x94705af5
mov eax, dword [0x10011078]
mov word [ebp - 0x18], ax
mov eax, dword [0x100110b0]
mov dword [ebp - 0x48], eax
mov ax, word [0x10011028]
mov word [ebp - 0x1a], ax
movzx eax, word [0x10011024]
mov word [ebp - 0xc], ax
mov eax, dword [0x10011080]
mov byte [ebp - 1], 0xe0
mov dword [ebp - 0x4c], eax
mov ecx, dword [0x10011058]
mov eax, dword [0x1001105c]
movzx eax, byte [0x10011013]
mov word [ebp - 0x20], cx
mov dword [ebp - 0x58], eax
mov al, byte [0x10011098]
mov byte [ebp - 4], 0x3c
mov byte [ebp - 2], al
movzx eax, word [0x100110b0]
mov dword [ebp - 0x34], eax
mov eax, dword [0x10011058]
mov ecx, dword [0x1001105c]
mov eax, 0xffffdff1
mov word [ebp - 0x14], ax
mov eax, 0x6f04
mov word [ebp - 0x14], ax
mov eax, dword [0x10011058]
mov ecx, dword [0x1001105c]
mov dword [ebp - 0x70], eax
movzx eax, byte [0x10011011]
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x70], 0x9f
mov dword [ebp - 0x6c], 0
cdq
mov dword [ebp - 0x70], 0xe5
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x70], eax
movsx eax, word [0x10011030]
mov dword [ebp - 0x6c], edx
cdq
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x5c], 0xc319
mov byte [ebp - 3], 0x69
mov dword [ebp - 0x3c], 0x5ebdb7b8
mov dword [ebp - 0x44], 0
cmp dword [0x1001100c], edx
jb 0x10003925
ja 0x10003918
cmp dword [0x10011008], eax
jb 0x10003925
mov ax, word [ebp - 0x10]
mov di, word [ebp - 0x34]
xor di, ax
jmp 0x10003929
mov di, word [ebp - 0x34]
mov al, 0xcd
mov word [ebp - 0x14], di
mov byte [0x10011013], al
mov ecx, 0x8a01709b
mov eax, dword [ebp - 0x64]
movzx eax, ax
cdq
sub ecx, eax
movzx esi, di
mov eax, 0x415a5
sbb eax, edx
or ecx, eax
je 0x10003960
mov dword [ebp - 0x64], 1
mov dword [ebp - 0x60], 0
jmp 0x10003980
xorps xmm0, xmm0
mov eax, esi
movlpd qword [ebp - 0x70], xmm0
mov di, si
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x64], eax
mov word [ebp - 0x14], di
movsx eax, word [ebp - 0x10]
mov ecx, dword [0x10011058]
cdq
push edx
mov esi, eax
mov eax, dword [0x1001105c]
push esi
push eax
push ecx
call fcn.1000f900
not edx
not eax
cmp dword [ebp - 0x60], edx
jg 0x100039fe
jl 0x100039ab
cmp dword [ebp - 0x64], eax
jae 0x100039fe
movsx ecx, word [ebp - 0x10]
xor edx, edx
movzx eax, di
cmp eax, ecx
setl dl
cmp di, 0x11
sbb eax, eax
neg eax
cmp edx, eax
jb 0x100039e6
movsx eax, word [0x10011028]
xor eax, 0xf5
mov dword [ebp - 0x48], 0xffff3025
mov dword [0x10011064], eax
mov dword [ebp - 0x6c], 0xffffffff
jmp 0x10003a29
movsx eax, word [ebp - 0x10]
sub eax, 0x8fd9f67
mov dword [0x1001102c], eax
mov eax, dword [ebp - 0x48]
mov dword [0x10033a28], eax
jmp 0x10003a29
cmp dword [ebp - 0x50], 0
je 0x10003a29
mov al, byte [0x10011026]
mov ecx, 0x5ba6
movzx eax, al
add ax, word [ebp - 0x10]
add ax, cx
mov word [ebp - 0x10], ax
mov ax, word [0x10011090]
add word [0x100110b8], ax
mov ax, word [ebp - 0xc]
mov cx, word [ebp - 0x10]
mov edi, dword [ebp + 8]
add cx, ax
mov word [ebp - 0x10], cx
mov al, byte [ebp - 2]
movsx ecx, byte [0x10011094]
movsx eax, al
imul eax, ecx
mov byte [ebp - 1], al
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x10004332
dec eax
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x2c], eax
mov edx, 0x2a
mov eax, dword [ebp - 0x40]
mov eax, dword [0x10011018]
mov ecx, dword [0x1001101c]
mov eax, dword [0x10011020]
mov word [ebp - 0xc], ax
mov dword [ebp - 0x64], 0x7e6d3a1c
mov byte [ebp - 5], 0xf5
movzx eax, word [0x10011060]
mov dword [ebp - 0x34], eax
mov eax, dword [0x10011058]
mov ecx, dword [0x1001105c]
mov dword [ebp - 0x70], eax
mov eax, dword [0x10011080]
mov dword [ebp - 0x6c], ecx
mov word [ebp - 0xc], dx
mov dword [ebp - 0x6c], eax
mov al, byte [0x10011070]
mov dword [ebp - 0x6c], 0x5e60
mov byte [ebp - 5], al
mov dx, word [0x10011024]
movzx eax, byte [0x10011015]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x70], 0x4b57
mov dword [ebp - 0x6c], 0
mov eax, dword [0x1001102c]
mov dword [ebp - 0x6c], eax
mov eax, dword [0x10011038]
mov al, byte [0x10011094]
mov dword [ebp - 0x38], 0x16
mov dword [ebp - 0x34], 0
mov byte [ebp - 0xb], al
movzx eax, word [0x10011024]
mov dword [ebp - 0x34], eax
movsx ecx, byte [ebp - 5]
movsx eax, dl
mov edx, dword [ebp - 0x64]
imul ecx, eax
xor eax, eax
imul edx, ecx
cmp dword [0x100110a8], eax
mov cx, word [0x10011028]
sete al
xor cx, ax
movzx eax, word [0x100110b8]
not cx
add cx, word [0x10011068]
add cx, dx
mov word [0x10011090], cx
mov ecx, dword [0x10011078]
sub ecx, eax
mov eax, dword [0x1001107c]
xor ecx, dword [0x10011070]
add eax, 0x2ea
imul eax, eax, 0x8a3e
sub ecx, eax
movsx eax, byte [0x10011014]
sub eax, 0xa8
mov dword [ebp - 0x64], ecx
mov dword [ebp - 0x34], eax
xor ecx, ecx
mov ax, word [0x100110b4]
mov eax, dword [ebp - 0x6c]
mov dword [0x1001102c], eax
movsx eax, byte [ebp - 2]
cmp ax, word [0x100110c0]
movsx eax, word [ebp - 0x20]
setge cl
xor edx, edx
cmp eax, ecx
mov ax, word [ebp - 0x14]
setg dl
cmp word [0x10011034], ax
sbb eax, eax
neg eax
add eax, edx
je 0x10003bc1
mov al, byte [ebp - 1]
neg al
mov byte [ebp - 3], al
jmp 0x10003c0c
mov eax, dword [0x10011070]
or eax, dword [0x10011074]
je 0x10003c0c
mov al, byte [0x10057c98]
xor edx, edx
mov byte [ebp - 1], al
movsx eax, byte [ebp - 3]
imul eax, dword [0x1001108c]
test bx, bx
movzx ecx, byte [0x10011026]
sete dl
imul ecx, dword [0x10011020]
sub edx, eax
mov eax, dword [0x10011048]
add edx, dword [0x10011050]
add eax, ecx
imul eax, edx
mov dword [ebp - 0x5c], eax
mov al, byte [0x10011070]
mov byte [ebp - 1], al
movzx eax, word [edi]
mov edx, eax
shr ax, 0xc
and edx, 0xfff
movzx ecx, ax
mov ebx, edx
add ebx, dword [ebp - 0x74]
cmp ax, 3
jne 0x10003c52
mov ax, word [ebp - 0x1a]
mov cx, word [ebp - 0x18]
cbw
sub cx, ax
mov eax, dword [ebp + 0xc]
add dword [ebx], eax
add edi, 2
mov ebx, dword [ebp - 0x28]
mov word [ebp - 0x18], cx
jmp 0x10003a4e
cmp ecx, 1
jne 0x10003d02
lea edx, [ecx + 0xe]
nop
mov ecx, dword [0x10011064]
movsx ax, byte [ebp - 2]
xor cx, word [0x1001103c]
movzx ecx, cx
movzx eax, ax
imul eax, ecx
movzx eax, ax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x40]
sub eax, dword [0x10011008]
inc byte [0x10011013]
mov dword [ebp - 0x40], eax
sub edx, 1
jne 0x10003c60
cmp dword [ebp - 0x40], edx
movzx esi, word [ebx]
mov ax, word [ebp - 0x1a]
sete byte [0x10011014]
movzx ecx, word [ebp - 0x14]
shl esi, 0x10
add esi, dword [ebp + 0xc]
movsx eax, al
cmp ecx, eax
setne dl
xor eax, eax
cmp word [ebp - 0x14], 0x27
setne al
cmp edx, eax
jae 0x10003cf1
movsx eax, word [ebp - 0x20]
not eax
cmp dword [0x10011064], eax
jbe 0x10003cf1
movsx ax, byte [0x10011014]
add word [0x10011088], ax
cmp byte [ebp - 2], 0
sete byte [0x10011012]
sar esi, 0x10
add edi, 2
mov word [ebx], si
mov ebx, dword [ebp - 0x28]
jmp 0x10003a4e
cmp ecx, 4
jne 0x10003fac
test dl, 2
jne 0x10004317
mov ecx, dword [ebp - 0x3c]
xor eax, eax
cmp byte [ebp - 0x54], al
movzx esi, word [ebx]
sete al
add ecx, 0xa333ef27
add eax, ecx
shl esi, 0x10
mov dword [0x1001108c], eax
movsx eax, word [0x10011030]
cmp eax, dword [0x100110b0]
jb 0x10003d51
cmp dword [0x10011094], 0x171a8a7d
jne 0x10003d51
xor ecx, ecx
jmp 0x10003d56
mov ecx, 1
movzx edx, word [ebp - 0x14]
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x64], edx
test ecx, ecx
je 0x10003e3e
movsx ax, byte [0x10011014]
xor edx, edx
cmp word [0x1001103c], ax
setle dl
xor eax, eax
cmp word [0x1001103c], 3
setle al
cmp edx, eax
jae 0x10003da4
mov ecx, dword [ebp - 0x58]
movsx eax, byte [ebp - 3]
sub ecx, eax
mov eax, ecx
cdq
mov dword [0x10011050], eax
mov dword [0x10011054], edx
mov edx, dword [ebp - 0x64]
cmp word [ebp - 0x10], 0
je 0x10003dcb
movsx ax, byte [ebp - 1]
mov ecx, 0xed6
sub ax, cx
mov word [0x1001106c], ax
mov al, byte [0x10082928]
mov byte [0x10011015], al
mov ecx, dword [0x10011040]
add edi, 2
mov eax, dword [0x10011044]
or ecx, eax
jne 0x10003e84
cmp word [0x10011060], cx
jne 0x10003e84
movsx eax, word [ebp - 0x20]
cmp edx, eax
je 0x10003e84
mov ecx, dword [0x10011078]
add ecx, dword [0x10011094]
movzx eax, byte [0x10011026]
imul eax, ecx
imul ecx, eax, 0x97
movsx eax, word [0x10011030]
cdq
sub eax, ecx
sbb edx, 0
add eax, 0x930bdb6f
adc edx, 0xcb731
or eax, edx
jne 0x10003e5a
mov dword [ebp - 0x3c], 1
mov dword [ebp - 0x44], eax
jmp 0x10003e6e
mov ax, word [ebp - 0x18]
dec al
mov byte [0x10011015], al
mov al, byte [ebp - 0x48]
sub al, 0x14
not al
mov byte [0x10011014], al
jmp 0x10003da7
xorps xmm0, xmm0
movlpd qword [ebp - 0x70], xmm0
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x3c], eax
mov dword [0x10011080], 0xcbc3
mov dword [0x10011084], 0
jmp 0x10003e9f
add dword [0x10011098], 1
movzx eax, byte [0x10011016]
adc dword [0x1001109c], 0
sub eax, 0x56
mov dword [ebp - 0x58], eax
movsx edx, word [edi]
mov cx, word [0x10011090]
add edx, 0x8000
add edx, dword [ebp + 0xc]
dec dword [ebp - 0x2c]
add edx, esi
mov eax, edx
movzx ecx, cx
sar eax, 0x10
sub edx, esi
mov word [ebx], ax
mov eax, 0x92c2
imul ecx, eax
mov eax, dword [ebp + 0xc]
shr edx, 0x10
shr eax, 0x10
sub edx, eax
mov dword [0x10011098], 2
movzx ebx, cx
mov dword [0x1001109c], 0
mov dword [ebp - 0x28], ebx
cmp edx, 1
jne 0x10003f36
movsx eax, byte [ebp - 0x24]
movzx edx, byte [0x10011011]
imul eax, eax, 0xffffffd8
add edx, 0x5f47
mov dword [ebp - 0x54], eax
mov eax, dword [0x10011018]
mov ecx, dword [0x1001101c]
and eax, edx
mov dword [0x10011018], eax
xor ecx, ecx
mov eax, dword [ebp - 0x60]
mov dword [0x1001101c], ecx
or word [eax], 1
add edi, 2
jmp 0x10003a4e
test edx, edx
je 0x1000430f
mov eax, dword [ebp - 0x3c]
or eax, dword [ebp - 0x44]
je 0x10003f56
mov eax, dword [0x10011074]
mov ecx, dword [0x10011070]
mov dword [ebp - 0x6c], eax
jmp 0x10003f63
mov ecx, dword [0x10011038]
mov dword [ebp - 0x6c], 0
mov word [0x10011024], cx
movsx ecx, byte [ebp - 1]
sub ecx, dword [ebp - 0x5c]
mov al, byte [ebp - 1]
or al, cl
mov byte [ebp - 1], al
mov ecx, dword [ebp - 0x50]
movzx eax, bx
cmp eax, ecx
sbb ecx, ecx
inc ecx
cmp ebx, 3
sbb eax, eax
inc eax
cmp ecx, eax
jae 0x10003f9d
mov ecx, dword [ebp - 0x4c]
mov al, cl
shl al, 5
sub al, cl
mov byte [0x10011012], al
mov eax, dword [ebp - 0x60]
or word [eax], 2
add edi, 2
jmp 0x10003a4e
cmp ecx, 2
jne 0x10003ffb
mov al, byte [ebp - 2]
movzx edx, word [ebx]
mov byte [ebp - 1], al
movsx eax, byte [ebp - 1]
movsx ecx, byte [ebp - 1]
add ecx, eax
movzx eax, byte [0x10011011]
add cl, byte [0x1001106c]
add eax, 0xd426
mov byte [ebp - 1], cl
mov dword [section..data], eax
mov eax, dword [ebp + 0xc]
add eax, edx
mov dword [0x10011004], 0
mov word [ebx], ax
add edi, 2
mov ebx, dword [ebp - 0x28]
jmp 0x10003a4e
test cx, cx
jne 0x10004017
mov eax, dword [ebp - 0x50]
xor eax, dword [0x10011020]
add edi, 2
mov ebx, dword [ebp - 0x28]
mov dword [ebp - 0x50], eax
jmp 0x10003a4e
cmp ecx, 6
jne 0x10004042
movsx eax, word [ebp - 0x20]
mov ebx, dword [ebp - 0x28]
cdq
add eax, 0xa57f4a16
mov dword [0x10011058], eax
adc edx, 0xab2bd
add edi, 2
mov dword [0x1001105c], edx
jmp 0x10003a4e
cmp ecx, 7
je 0x1000430c
cmp ecx, 0xb
jne 0x10004379
movzx eax, word [0x100110ac]
xor esi, esi
mov ecx, dword [0x10011064]
add eax, 0x82
imul ecx, eax
mov eax, dword [ebp - 0x58]
cdq
add eax, 0x845db5c7
adc edx, 0x9f42e
cmp ecx, eax
jne 0x10004087
cmp esi, edx
jne 0x10004087
lea eax, [esi + 1]
jmp 0x10004089
xor eax, eax
mov word [0x100110b8], ax
add edi, 2
mov al, byte [0x10011008]
mov byte [0x100329eb], al
mov eax, 0xf3
add ax, word [0x100110c0]
movzx ecx, ax
mov word [0x100110c0], ax
mov eax, dword [ebp - 0x3c]
or eax, dword [ebp - 0x44]
mov dword [ebp - 0x64], edi
mov dword [ebp - 0x48], 0x84e65504
mov dword [ebp - 0x6c], esi
mov dword [0x10011098], 0xb0
mov dword [0x1001109c], esi
jne 0x100040db
lea edx, [eax + 1]
jmp 0x100040dd
xor edx, edx
movsx eax, byte [0x10011014]
movsx ecx, cx
sub ecx, eax
movsx eax, byte [ebp - 1]
add eax, ecx
add eax, edx
mov dword [0x10011094], eax
movzx eax, word [ebx]
shl eax, 0x10
cdq
mov ecx, eax
mov dword [ebp - 0x6c], edx
cmp word [0x1001106c], si
je 0x10004122
mov eax, dword [ebp - 0x54]
movsx eax, al
xor eax, 0xf746
cdq
mov dword [0x10011040], eax
mov dword [0x10011044], edx
mov eax, 0x2915
mov word [0x100110b8], ax
mov ax, word [0x10011034]
add word [0x100110c0], ax
lea eax, [edi + 2]
mov dword [ebp - 0x60], eax
movsx eax, word [eax]
cdq
mov esi, eax
mov edi, edx
add esi, ecx
mov ecx, dword [0x10011040]
mov eax, dword [0x10011044]
adc edi, dword [ebp - 0x6c]
shld edi, esi, 0x10
shl esi, 0x10
or ecx, eax
je 0x10004177
mov eax, dword [ebp - 0x4c]
add eax, 0x3600
movzx eax, ax
mov dword [ebp - 0x34], eax
mov word [ebp - 0x14], ax
jmp 0x1000419c
mov cx, word [0x10011024]
mov al, byte [ebp - 0x4c]
sub cl, byte [0x100110c0]
sub al, 0x27
xor cl, al
mov eax, dword [ebp - 0x5c]
neg eax
mov byte [0x10011014], cl
mov word [0x100110c0], ax
mov eax, dword [ebp - 0x64]
movzx eax, word [eax]
cdq
add eax, dword [ebp + 0xc]
adc edx, 0
add eax, 0x8000
adc edx, 0
add esi, eax
mov eax, dword [0x10011064]
adc edi, edx
mov dword [0x10011064], eax
mov al, byte [0x10011015]
sub al, 0x32
shrd esi, edi, 0x10
mov byte [ebp - 4], al
movsx eax, byte [ebp - 1]
add eax, 0x4660aca3
sar edi, 0x10
add esi, 0x8000
mov dword [0x10011048], eax
mov dword [0x1001104c], 0
adc edi, 0
shrd esi, edi, 0x10
mov word [ebx], si
call fcn.10001560
mov word [ebp - 0xc], ax
cmp word [ebp - 0xc], 0
je 0x10004294
push ecx
call fcn.10001460
movzx eax, ax
add esp, 4
cdq
mov ecx, edx
mov dword [ebp - 0x3c], eax
or eax, ecx
mov dword [ebp - 0x44], ecx
je 0x10004235
movzx eax, word [ebp - 0x14]
cdq
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x6c], edx
jmp 0x100042e9
cmp word [ebp - 0xc], 0
jne 0x10004256
cmp dword [ebp - 0x68], 0
je 0x100042e9
mov eax, 0x41a1
mov word [0x100110b8], ax
jmp 0x100042e9
movzx eax, byte [0x10011012]
mov esi, dword [0x10011018]
mov edi, dword [0x1001101c]
cdq
sub esi, eax
mov eax, dword [0x10011018]
mov ecx, dword [0x1001101c]
sbb edi, edx
and eax, esi
mov dword [0x10011018], eax
and ecx, edi
mov al, byte [0x100110a8]
sub al, 0x4c
mov dword [0x1001101c], ecx
add byte [ebp - 0x1a], al
jmp 0x100042e9
mov eax, dword [0x10011050]
or eax, dword [0x10011054]
je 0x100042d5
mov eax, dword [0x10011078]
movzx ecx, word [0x10011034]
add ecx, 0x706feaaa
and eax, ecx
mov ecx, dword [0x10011048]
mov dword [0x10011078], eax
mov eax, dword [0x1001104c]
shld eax, ecx, 3
shl ecx, 3
mov word [0x10011088], cx
jmp 0x100042e9
cmp byte [ebp - 0x1a], 0
je 0x100042e9
mov ecx, dword [ebp - 0x4c]
lea eax, [ecx - 0xec]
xor ecx, eax
mov dword [ebp - 0x4c], ecx
mov eax, dword [0x100110bc]
sub esp, 0x14
mov edi, dword [ebp - 0x60]
call fcn.10001670
add esp, 0x14
mov word [0x10011090], ax
mov ax, word [0x10011090]
add dword [ebp - 0x2c], 0xfffffffe
mov ebx, dword [ebp - 0x28]
add edi, 2
jmp 0x10003a4e
movsx eax, word [0x1001103c]
add eax, 0x3ad3
add edi, 2
cdq
mov dword [0x10011058], eax
mov dword [0x1001105c], edx
mov ax, word [ebp - 0x18]
sub esp, 0xc
call fcn.100011d0
movzx eax, al
add esp, 0xc
mov dword [0x10011064], eax
cmp dword [0x10011064], 0
je 0x100043a5
movzx eax, word [0x10011060]
mov al, byte [ebp - 4]
mov al, byte [ebp - 1]
mov eax, dword [ebp - 0x68]
movzx eax, word [0x10011090]
sub al, 0x1e
mov byte [0x10011016], al
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebp - 0x54], 0
mov ax, word [ebp - 0x18]
jne 0x1000439c
mov eax, dword [0x10011078]
mov eax, dword [ebp - 0x58]
mov ax, word [ebp - 0x18]
movzx eax, word [0x100110c0]
mov word [0x1003dce8], ax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov cl, byte [ebp - 1]
mov eax, edi
pop edi
sub cl, 0x27
pop esi
mov byte [ebp - 1], cl
pop ebx
mov esp, ebp
pop ebp
ret