Function at 0x3001d000
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, ecx
push edi
test esi, esi
jne 0x3001d023
push str.ActivateBreakpoints:_Error__tracked_region_argument_NULL._n
call fcn.30009b40
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [0x302739a4], 0
jne 0x3001d056
push 0x302739a0
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [0x302739a4], 0
jne 0x3001d056
push str.ActivateBreakpoints:_Failed_to_obtain_system_page_size._n
call fcn.30009b60
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x28], 0
jne 0x3001d1b0
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
call ebx
mov edi, eax
push edi
push dword [esi]
push str.ActivateBreakpoints:_AllocationBase:_0x_p__thread__d_n
call fcn.30009fe0
mov edx, dword [esi]
add esp, 0xc
test edx, edx
je 0x3001d1bc
test edi, edi
je 0x3001d1bc
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x3001d097
cmp ecx, edx
jne 0x3001d099
mov ecx, edx
mov dword [esi + 0x44], ecx
mov eax, dword [0x302739d0]
mov dword [eax + 0x1c], ecx
call fcn.30007210
mov eax, dword [esi + 0x44]
cmp byte [eax], 0
je 0x3001d108
push 0x3001cc90
push 0
push 0
push eax
push 0
call ebx
lea edx, [esi + 0x48]
mov ecx, eax
call fcn.30007eb0
mov ecx, dword [esi + 0x44]
add esp, 0x14
push ecx
test eax, eax
jne 0x3001d0f1
push str.ActivateBreakpoints:_SetNextAvailableBreakpoint_failed_to_set_exec_bp_on_tracked_region_protect_address_0x_p_n
call fcn.30009fe0
add esp, 8
mov dword [esi + 0x44], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx eax, byte [ecx]
push eax
mov eax, dword [esi + 0x48]
push eax
push str.ActivateBreakpoints:_Set_breakpoint__d_to_execute_on_non_zero_byte_0x_x_at_protected_address:_0x_p_n
call fcn.30009fe0
add esp, 0x10
jmp 0x3001d158
push 0x3001cdc0
push 0
push 1
push eax
push 2
call ebx
lea edx, [esi + 0x48]
mov ecx, eax
call fcn.30007eb0
mov ecx, dword [esi + 0x44]
add esp, 0x14
push ecx
test eax, eax
jne 0x3001d148
push str.ActivateBreakpoints:_SetNextAvailableBreakpoint_failed_to_set_write_bp_on_tracked_region_protect_address_0x_p_n
call fcn.30009fe0
add esp, 8
mov dword [esi + 0x44], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push dword [esi + 0x48]
push str.ActivateBreakpoints:_Set_breakpoint__d_to_write_on_empty_address:_0x_p_n
call fcn.30009fe0
add esp, 0xc
mov edi, dword [esi]
push 0x3001cac0
push 0
push 1
add edi, 0x3c
push edi
push 4
call ebx
lea edx, [ebp - 4]
mov ecx, eax
call fcn.30007eb0
add esp, 0x14
test eax, eax
jne 0x3001d195
push dword [esi + 0x44]
push str.ActivateBreakpoints:_SetNextAvailableBreakpoint_failed_to_set_write_bp_on_DOS_e_lfanew_address_0x_p_n
call fcn.30009fe0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push edi
push dword [ebp - 4]
push str.ActivateBreakpoints:_Set_breakpoint__d_to_write_on_DOS_e_lfanew_address:_0x_p_n
call fcn.30009fe0
add esp, 0xc
mov dword [0x30272c64], 1
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push edi
push edx
push str.ActivateBreakpoints:_Error__one_of_the_following_is_NULL___TrackedRegion__AllocationBase:_0x_p__thread__d_n
call fcn.30009fe0
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret