Function at 0x401d17
Capabilities:
Create process on windows
Query environment variable
Read .ini file
Terminate process

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbe0
pushal
push 0x4042d0
push 0x400
push 0x4046d0
push 0
push 0x4040f8
push 0x4040f4
call sub.kernel32.dll_GetPrivateProfileStringA
or eax, eax
jne 0x401d91
push 0x400
lea eax, [ebp - 0x420]
push eax
push dword [0x4042c8]
call sub.kernel32.dll_GetModuleFileNameA
lea eax, [ebp - 0x420]
push eax
call fcn.00402a70
mov edi, eax
push edi
call sub.kernel32.dll_lstrlenA
mov byte [eax + edi - 4], 0
push edi
push 0x4046d0
call sub.kernel32.dll_lstrcpyA
push str..snr_offsets.ldr
push 0x4046d0
call sub.kernel32.dll_lstrcatA
jmp 0x401df4
push 0x400
lea eax, [ebp - 0x420]
push eax
push dword [0x4042c8]
call sub.kernel32.dll_GetModuleFileNameA
lea eax, [ebp - 0x420]
push eax
call fcn.00402a70
mov edi, eax
push edi
call sub.kernel32.dll_lstrlenA
mov byte [eax + edi - 4], 0
push 0x4046d0
call fcn.0040280b
push 0x404104
push 0x4046d0
call sub.kernel32.dll_lstrcatA
push edi
push 0x4046d0
call sub.kernel32.dll_lstrcatA
push str..snr_offsets.ldr
push 0x4046d0
call sub.kernel32.dll_lstrcatA
push 0x4046d0
call fcn.00402930
cmp eax, 1
je 0x40209f
mov dword [ebp - 0x18], 0
push 1
push 4
push dword [0x4042c8]
call fcn.00401440
or eax, eax
je 0x40209f
mov esi, eax
mov dword [ebp - 0x14], eax
push 0x40
push 0x404070
push str.This_is_a_SearchReplace_loader._Press_OK_to_start_the_search_and_wait..._
push 0
call sub.user32.dll_MessageBoxA
push 1
push 0xe
push dword [0x4042c8]
call fcn.00401440
or eax, eax
je 0x401e55
lea eax, [eax + 9]
jmp 0x401e58
lea eax, [esi + 0x22]
push 0x400
push 0x404ad0
push eax
call sub.kernel32.dll_ExpandEnvironmentStringsA
push esi
mov esi, 0x404ad0
jmp 0x401e8c
lodsb al, byte [esi]
cmp al, 0x25
jne 0x401e8c
push 0x404ad0
call fcn.00402a70
push eax
push 0x404ad0
call sub.kernel32.dll_lstrcpyA
jmp 0x401e91
cmp byte [esi], 0
jne 0x401e70
pop esi
push 0x4042d0
call fcn.00402930
cmp eax, 1
jne 0x401ec1
push 0x4042d0
push 0x400
push 0x404ad0
push 0
push 0x404158
push 0x404154
call sub.kernel32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x20], 0
push 0x405324
push 0x4052e0
push 0
push 0
push 0
push 0
push 0
push 0
push dword [0x4042cc]
push 0x404ad0
call sub.kernel32.dll_CreateProcessA
or eax, eax
jne 0x401f06
push 0x404ad0
call fcn.004026fa
cmp eax, 1
je 0x401ec1
jmp 0x402098
push 0x9c0
call sub.kernel32.dll_Sleep
pushal
push 0
call fcn.00402206
mov dword [ebp - 8], eax
push 0x404ad0
call fcn.0040217a
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x16]
lea esi, [eax + esi]
push esi
call fcn.004020f6
mov dword [ebp - 0xc], eax
push 4
push 0x1000
push eax
push 0
call sub.kernel32.dll_VirtualAlloc
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebx + 0x16]
dec eax
push eax
push dword [ebp - 0x14]
push dword [ebp - 0x10]
call sub.kernel32.dll_RtlMoveMemory
jmp 0x401ff2
xor ecx, ecx
mov dword [ebp - 0x1c], 0
push ecx
mov eax, dword [esi]
mov ebx, dword [ebp - 8]
add ebx, ecx
push 0
push eax
push 0x404ed0
push ebx
push dword [0x405324]
call sub.kernel32.dll_ReadProcessMemory
pop ecx
lea eax, [esi + 8]
mov ebx, eax
add ebx, dword [esi]
push dword [esi]
push ebx
push eax
push 0x404ed0
call fcn.00402146
cmp eax, 1
jne 0x401fdc
inc dword [ebp - 0x1c]
mov eax, dword [esi + 4]
cmp eax, 0xffffffff
je 0x401fb1
cmp dword [ebp - 0x1c], eax
jne 0x401fd8
add ebx, dword [esi]
mov edx, ebx
add edx, dword [esi]
push dword [esi]
push edx
push ebx
push 0x404ed0
push ecx
push dword [ebp - 0x10]
call fcn.004020a2
mov dword [ebp - 0x18], 1
cmp dword [esi + 4], 0xffffffff
je 0x401fdc
jmp 0x401fe4
jmp 0x401fdc
inc ecx
cmp ecx, dword [ebp - 4]
jae 0x401fe4
jmp 0x401f6a
mov eax, dword [esi]
lea eax, [eax*4]
add esi, 8
add esi, eax
cmp dword [esi], 0
jne 0x401f61
popal
cmp dword [ebp - 0x18], 0
jne 0x40201a
cmp dword [ebp - 0x20], 1
jae 0x40201a
inc dword [ebp - 0x20]
push 0x9c0
call sub.kernel32.dll_Sleep
jmp 0x401f10
push 0
push dword [0x405324]
call sub.kernel32.dll_TerminateProcess
cmp dword [ebp - 0x18], 1
jne 0x402075
mov esi, dword [ebp - 0x14]
push 0x404ad0
call fcn.00402783
mov edi, dword [ebp - 0x10]
mov dword [edi + 0xa], eax
mov eax, dword [esi + 0xe]
or eax, eax
je 0x402050
mov dword [edi + 0xe], eax
mov eax, dword [esi + 0x12]
mov dword [edi + 0x12], eax
push dword [ebp - 0xc]
push dword [ebp - 0x10]
push 0x4046d0
call fcn.004029a4
push 0x40
push 0x404070
push str.Found_Offsets._Please_restart_loader_
push 0
call sub.user32.dll_MessageBoxA
jmp 0x402088
push 0x30
push 0x404070
push str.Sorry_no_data_found_
push 0
call sub.user32.dll_MessageBoxA
push 0x4000
push dword [ebp - 0xc]
push dword [ebp - 0x10]
call sub.kernel32.dll_VirtualFree
push 0
call sub.kernel32.dll_ExitProcess
popal
leave
ret