Function at 0x30007b20
Capabilities:
Check for hardware breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2e4
mov eax, dword [0x3021ae88]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
cmp edx, 3
ja 0x30007d50
mov eax, dword [0x302727e8]
test eax, eax
je 0x30007b56
cmp dword [eax], ecx
je 0x30007b61
mov eax, dword [eax + 0x88]
test eax, eax
jne 0x30007b48
push ecx
push str.ClearThreadBreakpoint:_No_thread_breakpoints_for_thread__d_n
jmp 0x30007d56
shl edx, 5
cmp dword [eax + 4], 0
lea esi, [edx + eax]
jne 0x30007b8d
push str.ClearThreadBreakpoint:_There_is_no_thread_handle_in_the_thread_breakpoint___Error._n
call fcn.30009b00
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015dd6d
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 0x30007bb8
push ebx
push str.ClearDebugRegister:__d_is_an_invalid_breakpoint_type__must_be_0_3._n
jmp 0x30007d28
cmp edi, 3
ja 0x30007d22
cmp eax, 8
ja 0x30007d1a
lea eax, [ebp - 0x2d8]
mov dword [ebp - 0x2d8], 0x10010
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetThreadContext]
test eax, eax
jne 0x30007c13
push str.ClearDebugRegister:_Initial_GetThreadContext_failed
call fcn.30009b20
add esp, 4
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.30009b00
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015dd6d
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x30007c29
and dword [ebp - 0x2c0], 0xfff0fffe
mov dword [ebp - 0x2d4], edi
jmp 0x30007c78
cmp edi, 1
jne 0x30007c44
and dword [ebp - 0x2c0], 0xff0ffffb
mov dword [ebp - 0x2d0], 0
jmp 0x30007c78
cmp edi, 2
jne 0x30007c5f
and dword [ebp - 0x2c0], 0xf0ffffef
mov dword [ebp - 0x2cc], 0
jmp 0x30007c78
cmp edi, 3
jne 0x30007c78
and dword [ebp - 0x2c0], 0xfffffbf
mov dword [ebp - 0x2c8], 0
cmp ebx, 3
jne 0x30007c93
mov ecx, dword [ebp - 0x2dc]
call fcn.3004d370
test eax, eax
je 0x30007c93
mov ecx, edi
call fcn.3001d820
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 0x30007ce1
push str.ClearDebugRegister:_SetThreadContext_failed
call fcn.30009b20
add esp, 4
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.30009b00
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015dd6d
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.3015dd6d
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 0x30007d28
push edi
push str.ClearDebugRegister:__d_is_an_invalid_register__must_be_0_3._n
call fcn.30009b00
add esp, 8
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.30009b00
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.3015dd6d
mov esp, ebp
pop ebp
ret
push edx
push str.ClearThreadBreakpoint:_Error___register_value__d__can_only_have_value_0_3._n
call fcn.30009b00
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
xor eax, eax
pop edi
pop esi
pop ebx
call fcn.3015dd6d
mov esp, ebp
pop ebp
ret