Function at 0x10037688
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1005df28
call fcn.1005c4f8
sub esp, 0xec
cmp byte [ebp + 0x10], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov esi, ecx
mov byte [ebp - 0x40], dl
je 0x1003785e
mov dword [ebp - 0x20], 0x518c
xor ebx, ebx
cmp dword [ebp - 0x20], 0x554f
jle 0x10037716
mov esi, ebx
mov edi, ebx
mov ecx, edi
mov eax, esi
sar eax, cl
lea ecx, [ebp - 0xf8]
cdq
push edx
push eax
call fcn.10001a85
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x100376e1
mov eax, dword [eax]
push eax
call fcn.10045794
pop ecx
push ebx
push 1
lea ecx, [ebp - 0xf8]
call fcn.1000224a
inc edi
cmp edi, 0x3d8f
jl 0x100376c3
inc esi
cmp esi, 0x6001
jl 0x100376c1
push ebx
push ebx
push 0x2070
push ebx
call dword [sym.imp.USER32.dll_AppendMenuA]
cmp dword [ebp - 0x20], 0x4ef4
jge 0x1003772a
push str.uhy_vdqzs_zuyav_lnlskpxew_qxb_myln_bwvj_zuiwi_apxx_kpomlthta_pgpgiw_pkzcw
call fcn.10045794
pop ecx
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x20], 0x2a47
cmp dword [ebp - 0x20], 0x2a95
jle 0x10037763
mov esi, ebx
mov edi, esi
mov ebx, 0x76bc
mov eax, edi
mov ecx, 0x10078fb8
cdq
push edx
push eax
call fcn.10001d2f
dec edi
dec ebx
jne 0x10037747
inc esi
cmp esi, 0x427e
jl 0x10037740
mov dword [ebp - 4], 2
cmp dword [ebp - 0x20], 0x2994
jge 0x10037782
mov edx, str.scqib_ecgl_czkouuty_waxnbxb_lqeosy_tcepdner_weitrri_dvyxdwibz_xsb_jveflom
mov ecx, 0x10078fb8
call fcn.10003c4d
or dword [ebp - 4], 0xffffffff
cmp byte [ebp + 0x20], 0
je 0x10037846
mov dword [ebp - 0x20], 0x607a
cmp dword [ebp - 0x20], 0x6338
jle 0x100377d0
push ebx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov esi, ebx
mov edi, ebx
mov ecx, edi
mov eax, esi
sar eax, cl
mov ecx, 0x10078fb8
cdq
push edx
push eax
call fcn.10001d2f
inc edi
cmp edi, 0x32c0
jl 0x100377ab
inc esi
cmp esi, 0x3629
jl 0x100377a9
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0
je 0x100377e3
push 0x4bf
call dword [sym.imp.KERNEL32.dll_TlsFree]
mov dword [ebp - 4], 4
cmp dword [ebp - 0x20], 0x5f60
jge 0x10037802
mov edx, str.fbbpycc_aciwl_skdxhuqd_cgwpxoe_oinm_raba_ohjfw_bwuxm
mov ecx, 0x10078fb8
call fcn.10003c4d
jmp 0x10037e3f
mov eax, dword [ebp + 0x14]
cmp byte [eax], 0
je 0x10037e3f
xor cl, cl
call fcn.1003763e
jmp 0x10037e3f
test dl, dl
je 0x1003788c
push 3
pop edi
mov dword [esi], 0
cmp dword [esi], edi
jge 0x10037e3f
mov edx, dword [ebp + 0x18]
mov ecx, dword [esi]
mov eax, dword [edx]
mov dword [eax + ecx*4], 0xc69aed23
inc dword [esi]
cmp dword [esi], edi
jl 0x10037876
jmp 0x10037e3f
xor ebx, ebx
mov dword [ebp - 0x18], 0x256915a
mov dword [ebp - 0x18], ebx
jmp 0x100378a8
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x38], 0xfff8
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x1003789a
mov dword [ebp - 0x18], ebx
cmp dword [ebp - 0x18], ebx
jl 0x1003797f
mov dword [ebp - 0x1c], 0xcd53bc6e
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x1c], ebx
jl 0x10037976
mov dword [ebp - 0x14], ebx
jmp 0x100378e0
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x60], 0x651328f6
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 4
jl 0x100378d2
mov dword [ebp - 0x14], ebx
jmp 0x100378fc
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x98], 0x5ff44426
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 1
jl 0x100378eb
mov dword [ebp - 0x58], ebx
cmp dword [ebp - 0x58], ebx
jl 0x1003796d
mov eax, dword [ebp - 0x18]
cmp dword [ebp + eax*4 - 0x38], 0x54bc
jg 0x1003795e
mov eax, dword [ebp - 0x58]
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x38]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x58]
cmp eax, 0xcee6
mov eax, dword [ebp - 0x58]
setl cl
xor edx, edx
sub ecx, eax
mov eax, dword [ebp - 0x58]
cmp ecx, eax
mov eax, dword [ebp - 0x18]
setg dl
xor ecx, ecx
cmp edx, eax
setl cl
imul eax, ecx, 0x273d
cmp eax, dword [ebp - 0x58]
jne 0x1003795b
mov eax, dword [ebp - 0x18]
cmp dword [ebp + eax*4 - 0x38], ebx
jne 0x1003795e
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x98], 1
dec dword [ebp - 0x58]
jns 0x1003790a
dec dword [ebp - 0x1c]
jns 0x100378cd
dec dword [ebp - 0x18]
jns 0x100378ba
push 0x3727
push 0x4a38
push 0x5027
push ebx
push ebx
mov byte [ebp + 0x13], bl
lea ecx, [ebp + 0x13]
push 0x7fca
mov dl, 1
call fcn.1003a036
add esp, 0x18
mov dword [ebp - 0x14], 0x5c68ec0a
lea ecx, [ebp - 0xb0]
push 3
pop edi
push edi
call fcn.10001eb9
mov dword [ebp - 4], 6
lea eax, [ebp - 0xb0]
push dword [ebp + 0x10]
movdqa xmm0, xmmword [0x1006bd80]
lea ecx, [ebp - 0x94]
push eax
lea eax, [ebp - 0xc0]
mov dword [ebp - 0x94], ebx
push eax
push ebx
movdqu xmmword [ebp - 0xc0], xmm0
mov dword [ebp - 0x90], ebx
mov dword [ebp - 0x8c], ebx
call fcn.100045dd
mov byte [ebp - 4], 7
lea eax, [ebp - 0xd0]
push dword [ebp + 0x10]
movdqa xmm0, xmmword [0x1006bd90]
lea ecx, [ebp - 0x74]
push eax
lea eax, [ebp - 0xe0]
mov dword [ebp - 0x20], 0x6c7a88ff
push eax
push ebx
movdqu xmmword [ebp - 0xe0], xmm0
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
call fcn.100045dd
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 8
mov dword [ebp - 0x1c], 0xa95534fd
lea ecx, [ebp - 0xb0]
push eax
xor dl, dl
call fcn.100381b7
pop ecx
mov dword [ebp - 0x30], ebx
jmp 0x10037a6f
mov eax, dword [ebp - 0x30]
mov dword [ebp + eax*4 - 0x68], 1
inc dword [ebp - 0x30]
cmp dword [ebp - 0x30], 2
jl 0x10037a61
mov dword [ebp - 0x14], 0xf
cmp dword [ebp - 0x14], 5
jl 0x10037b95
mov dword [ebp - 0x1c], 0x51ad386c
mov dword [ebp - 0x1c], ebx
jmp 0x10037b7b
mov dword [ebp - 0x24], 0x1421
cmp dword [ebp - 0x24], 0x8cf
jge 0x10037b59
lea eax, [ebp - 0x50]
push eax
push 0x10067400
call fcn.10045c3e
xor esi, esi
inc esi
pop ecx
pop ecx
cmp dword [ebp - 0x50], esi
jl 0x10037b59
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x2c]
push eax
push str._d__d__d__d
call fcn.10045c3e
push dword [ebp - 0x34]
push dword [ebp - 0x4c]
push dword [ebp - 0x44]
push dword [ebp - 0x2c]
push esi
push str.Problem_set__d:__d____d__base_7_digits__d_through__d:
call fcn.10045794
mov eax, dword [ebp - 0x2c]
add esp, 0x2c
mov edi, dword [ebp - 0x44]
mov ecx, ebx
cdq
idiv edi
cmp dword [ebp - 0x34], 0
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x18], ebx
jl 0x10037b47
mov ebx, dword [ebp - 0x34]
imul eax, edx, 7
mov dword [ebp - 0x2c], eax
cmp ecx, dword [ebp - 0x4c]
jl 0x10037b37
cdq
idiv edi
add eax, 0x30
push eax
call fcn.10047705
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x34]
pop ecx
mov ecx, dword [ebp - 0x18]
cdq
idiv edi
inc ecx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x18], ecx
cmp ecx, ebx
jle 0x10037b13
xor ebx, ebx
push 0xa
call fcn.10047705
inc esi
pop ecx
cmp esi, dword [ebp - 0x50]
jle 0x10037ac5
lea eax, [ebp - 0xb0]
mov dword [ebp - 0x78], 0x41651328
push eax
push 0x6a81
xor dl, dl
lea ecx, [ebp - 0x78]
call fcn.1003a2ae
dec dword [ebp - 0x1c]
pop ecx
pop ecx
cmp dword [ebp - 0x1c], 0xfffffff0
jle 0x10037a95
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 5
jge 0x10037a86
push 3
pop edi
mov eax, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp - 0x14]
cmp eax, 0xffffffff
mov esi, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
setne dl
xor ecx, ecx
test edx, edx
setne cl
mov dword [esi + 0xc], edx
xor edx, edx
cmp ecx, eax
setne dl
sub edx, dword [ebp - 0x14]
sub edx, dword [ebp - 0x20]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, 0x22c7
setne cl
add ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x74]
neg ecx
sbb ecx, ecx
inc ecx
cmp ecx, dword [eax]
je 0x10037be5
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x74]
cmp dword [eax], 1
mov eax, dword [ebp - 0x14]
setg cl
sub ecx, eax
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
sub edi, eax
add edi, dword [ebp - 0x14]
je 0x10037c5c
mov dword [ebp - 0x1c], 0x9e98c534
xor ecx, ecx
mov dword [ebp - 0x18], 0xe54fd57e
mov eax, dword [ebp - 0x68]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x18], ebx
mov eax, dword [ebp - 0x18]
cmp eax, 0xfffffffb
setne cl
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 0x64]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x64]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
jmp 0x10037c78
push 0x2cd4
lea eax, [ebp - 0x25]
mov byte [ebp - 0x25], bl
push eax
push ecx
push 0x3382
xor dl, dl
call fcn.1003a3ce
add esp, 0x10
lea ecx, [ebp - 0x74]
call fcn.10001f3c
lea ecx, [ebp - 0x94]
call fcn.10001f3c
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xb0]
call fcn.10001f3c
mov eax, dword [ebp + 0x1c]
lea ecx, [ebp - 0xa4]
push dword [ebp + 0x10]
movdqa xmm0, xmmword [0x1006bdb0]
movdqu xmmword [ebp - 0xd0], xmm0
movzx eax, word [eax]
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0xc0]
push eax
lea eax, [ebp - 0xd0]
mov dword [ebp - 0xa4], ebx
push eax
push ebx
mov dword [ebp - 0xa0], ebx
mov dword [ebp - 0x9c], ebx
call fcn.100045dd
mov eax, dword [ebp - 0xa4]
lea ecx, [ebp - 0xa4]
or dword [ebp - 4], 0xffffffff
mov dword [eax + 8], 0xffffffe5
call fcn.10001f3c
mov esi, ebx
mov cl, byte [ebp + esi - 0x3c]
mov dl, 0x6e
call fcn.1003f0e3
mov byte [ebp + esi - 0x3c], al
inc esi
cmp esi, 2
jb 0x10037d00
mov dword [ebp - 0x20], 0x2cf4
xor eax, eax
inc eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], 0x66193fe6
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x24], 0x62ff
cmp dword [ebp - 0x24], 0x654e
jle 0x10037d8f
mov esi, ebx
mov edi, ebx
mov dword [ebp - 0x18], 0x2eac
mov dword [ebp - 0x48], ebx
mov eax, edi
mov ecx, 0x10078fb8
xor eax, ebx
cdq
push edx
push eax
call fcn.10001d2f
inc ebx
cmp ebx, 0x614b
jl 0x10037d62
add edi, esi
dec dword [ebp - 0x18]
push 0
pop ebx
jne 0x10037d5f
inc esi
cmp esi, 0x3cbd
jl 0x10037d56
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x80]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], 1
mov dword [ebp - 4], 0xa
cmp dword [ebp - 0x24], 0x6280
jge 0x10037dca
mov edx, str.okq_uufoohsj_epxdwej_gxh_slqrnhi_yqh_knazh_lvg
mov ecx, 0x10078fb8
call fcn.10003c4d
cmp dword [ebp - 0x1c], 1
sbb eax, eax
xor ecx, ecx
neg eax
cmp eax, 0x454
setge cl
xor eax, eax
cmp ecx, 0x20f
setne al
sub eax, 7
neg eax
sbb eax, eax
xor edx, edx
inc eax
imul ecx, eax, 0x40b3
mov eax, dword [ebp - 0x84]
cmp eax, ecx
setl dl
mov dword [ebp - 0x18], edx
xor edx, edx
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp ecx, eax
mov ecx, dword [ebp + 8]
setl dl
xor eax, eax
cmp edx, 0x9beb
setge al
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x48], eax
mov ax, word [ebp - 0x3c]
mov word [ecx], ax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret