Function at 0x30007c50
Capabilities:
Check for hardware breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2e4
mov eax, dword [0x3021be88]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
cmp edx, 3
ja 0x30007e80
mov eax, dword [0x302736b8]
test eax, eax
je 0x30007c86
cmp dword [eax], ecx
je 0x30007c91
mov eax, dword [eax + 0x88]
test eax, eax
jne 0x30007c78
push ecx
push str.ClearThreadBreakpoint:_No_thread_breakpoints_for_thread__d_n
jmp 0x30007e86
shl edx, 5
cmp dword [eax + 4], 0
lea esi, [edx + eax]
jne 0x30007cbd
push str.ClearThreadBreakpoint:_There_is_no_thread_handle_in_the_thread_breakpoint___Error._n
call fcn.30009b40
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015f3bd
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x18]
mov ecx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x2dc], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x2e0], ecx
cmp ebx, 3
jbe 0x30007ce8
push ebx
push str.ClearDebugRegister:__d_is_an_invalid_breakpoint_type__must_be_0_3._n
jmp 0x30007e58
cmp edi, 3
ja 0x30007e52
cmp eax, 8
ja 0x30007e4a
lea eax, [ebp - 0x2d8]
mov dword [ebp - 0x2d8], 0x10010
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetThreadContext]
test eax, eax
jne 0x30007d43
push str.ClearDebugRegister:_Initial_GetThreadContext_failed
call fcn.30009b60
add esp, 4
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.30009b40
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015f3bd
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x30007d59
and dword [ebp - 0x2c0], 0xfff0fffe
mov dword [ebp - 0x2d4], edi
jmp 0x30007da8
cmp edi, 1
jne 0x30007d74
and dword [ebp - 0x2c0], 0xff0ffffb
mov dword [ebp - 0x2d0], 0
jmp 0x30007da8
cmp edi, 2
jne 0x30007d8f
and dword [ebp - 0x2c0], 0xf0ffffef
mov dword [ebp - 0x2cc], 0
jmp 0x30007da8
cmp edi, 3
jne 0x30007da8
and dword [ebp - 0x2c0], 0xfffffbf
mov dword [ebp - 0x2c8], 0
cmp ebx, 3
jne 0x30007dc3
mov ecx, dword [ebp - 0x2dc]
call fcn.3004ea60
test eax, eax
je 0x30007dc3
mov ecx, edi
call fcn.3001d660
lea eax, [ebp - 0x2d8]
mov dword [ebp - 0x2d8], 0x10010
push eax
push dword [ebp - 0x2e0]
call dword [sym.imp.KERNEL32.dll_SetThreadContext]
test eax, eax
jne 0x30007e11
push str.ClearDebugRegister:_SetThreadContext_failed
call fcn.30009b60
add esp, 4
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.30009b40
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015f3bd
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x10], 0
mov eax, 1
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015f3bd
mov esp, ebp
pop ebp
ret
push eax
push str.ClearDebugRegister:__d_is_an_invalid_Size__must_be_1__2__4_or_8._n
jmp 0x30007e58
push edi
push str.ClearDebugRegister:__d_is_an_invalid_register__must_be_0_3._n
call fcn.30009b40
add esp, 8
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.30009b40
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015f3bd
mov esp, ebp
pop ebp
ret
push edx
push str.ClearThreadBreakpoint:_Error___register_value__d__can_only_have_value_0_3._n
call fcn.30009b40
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
xor eax, eax
pop edi
pop esi
pop ebx
call fcn.3015f3bd
mov esp, ebp
pop ebp
ret