Function at 0x411412
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6c
push ebx
push esi
xor esi, esi
cmp dword [0x495228], esi
jne 0x411630
push 1
pop ebx
mov dword [0x495228], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [0x489154], eax
mov eax, 0x489128
mov dword [0x4951f0], eax
mov dword [sym.ruby187c.exc_ruby_frame], eax
mov dword [0x4891e0], 0x4891a8
call dword [sym.imp.MSVCRT.dll___p__environ]
mov eax, dword [eax]
mov dword [sym.ruby187c.exc_rb_origenviron], eax
lea eax, [ebp - 8]
push eax
call sym.ruby187c.exc_Init_stack
pop ecx
call sym.ruby187c.exc_Init_heap
mov eax, dword [0x489110]
mov dword [ebp - 0xc], eax
call sym.ruby187c.exc_rb_newobj
mov dword [eax], 0x3e
mov dword [eax + 4], esi
cmp dword [sym.ruby187c.exc_ruby_safe_level], 3
jl 0x41149e
test al, 3
jne 0x41149e
test eax, 0xfffffffb
je 0x41149e
or byte [eax + 1], bl
mov dword [eax + 8], esi
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], esi
mov ecx, dword [sym.ruby187c.exc_ruby_scope]
mov dword [ebp - 4], ecx
mov dword [sym.ruby187c.exc_ruby_scope], eax
mov dword [eax + 0xc], esi
mov eax, dword [sym.ruby187c.exc_ruby_scope]
push esi
mov dword [ebp - 0x20], 4
mov dword [eax + 8], esi
mov ecx, dword [sym.ruby187c.exc_ruby_frame]
mov eax, dword [sym.ruby187c.exc_ruby_scope]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [0x4891e0]
mov dword [0x4891b8], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x28], ecx
mov ecx, dword [0x4891b4]
lea eax, [ebp - 0x6c]
mov dword [0x4891b4], eax
lea eax, [ebp - 0x6c]
push eax
mov dword [0x489110], ebx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], esi
call sub.MSVCRT.dll__setjmp3
pop ecx
cmp eax, esi
pop ecx
mov dword [ebp - 8], eax
jne 0x4115b3
call sym.ruby187c.exc_rb_call_inits
mov eax, dword [sym.ruby187c.exc_rb_cObject]
mov ecx, dword [sym.ruby187c.exc_ruby_frame]
mov dword [sym.ruby187c.exc_ruby_class], eax
mov eax, dword [sym.ruby187c.exc_ruby_top_self]
push esi
push esi
mov dword [ecx], eax
push dword [sym.ruby187c.exc_rb_cObject]
push 0x54
call sym.ruby187c.exc_rb_node_newnode
push dword [sym.ruby187c.exc_ruby_top_self]
mov dword [sym.ruby187c.exc_ruby_top_cref], eax
mov dword [sym.ruby187c.exc_ruby_cref], eax
call fcn.0041c69e
push eax
push str.TOPLEVEL_BINDING
call sym.ruby187c.exc_rb_define_global_const
add esp, 0x1c
call sym.ruby187c.exc_ruby_prog_init
dec dword [sym.ruby187c.exc_rb_prohibit_interrupt]
jne 0x4115a6
cmp dword [sym.ruby187c.exc_rb_thread_critical], esi
jne 0x4115a6
cmp dword [sym.ruby187c.exc_rb_thread_pending], esi
jne 0x411597
mov eax, dword [sym.ruby187c.exc_rb_thread_tick]
dec dword [sym.ruby187c.exc_rb_thread_tick]
test eax, eax
jg 0x4115a6
mov dword [sym.ruby187c.exc_rb_thread_tick], 0x1f4
call sym.ruby187c.exc_rb_thread_schedule
cmp dword [sym.ruby187c.exc_rb_trap_pending], esi
je 0x4115b3
call sym.ruby187c.exc_rb_trap_exec
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 8], esi
mov dword [0x4891b4], eax
jne 0x411634
mov eax, dword [sym.ruby187c.exc_ruby_scope]
test byte [eax + 0x10], 4
je 0x4115de
cmp dword [ebp - 4], esi
je 0x4115de
push dword [ebp - 4]
call fcn.0041c40a
mov eax, dword [sym.ruby187c.exc_ruby_scope]
pop ecx
test byte [eax + 0x10], bl
jne 0x41160d
mov dword [eax + 0xc], esi
mov eax, dword [sym.ruby187c.exc_ruby_scope]
mov dword [eax + 8], esi
mov eax, dword [sym.ruby187c.exc_ruby_scope]
test byte [eax + 0x10], 4
jne 0x41160d
cmp eax, dword [0x4891b8]
je 0x41160d
push eax
call sym.ruby187c.exc_rb_gc_force_recycle
mov eax, dword [sym.ruby187c.exc_ruby_scope]
pop ecx
or dword [eax + 0x10], 2
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
mov dword [0x489110], eax
mov eax, dword [0x4891b8]
mov dword [sym.ruby187c.exc_ruby_scope], eax
and dword [eax + 0x10], 0xfffffffd
mov dword [0x495214], ebx
pop esi
pop ebx
leave
ret
call fcn.00411640
push ebx
call dword [sym.imp.MSVCRT.dll_exit]