Function at 0x412c60
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword [0x62bbe4]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4132bb
sub esp, 0x6c
mov eax, dword [0x62c008]
test eax, eax
jne 0x412f3e
mov eax, dword [esp + 0x70]
test eax, eax
je 0x4132a4
movzx ecx, byte [eax + 0xf]
and ecx, 0x1f
cmp cl, 0x16
jne 0x413248
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x413232
nop
mov ecx, dword [esp + 0x74]
mov edx, dword [0x613c34]
test byte [edx], al
mov ebx, ecx
shr ecx, 0x16
mov ecx, dword [edx + ecx*4]
test ecx, ecx
je 0x412cd5
mov edx, ebx
shr ebx, 0xd
and ebx, 0x1ff
mov ecx, dword [ecx + ebx*4]
jmp 0x412cd9
mov edx, ebx
xor ecx, ecx
mov dword [esp + 0x44], eax
test ecx, ecx
je 0x412ced
movzx ecx, byte [ecx + 0x41]
test cl, cl
jne 0x41321c
mov dword [esp], edx
mov dword [esp + 4], 0
mov dword [esp + 8], 0
call sym.runtime.findObject
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x412d2a
mov eax, dword [esp + 0x74]
lea ecx, [0x62baa0]
cmp eax, ecx
je 0x4131ca
lea ecx, [0x5e31c0]
jmp 0x4131d6
mov ecx, dword [esp + 0x10]
movzx edx, byte [ecx + 0x3e]
test dl, 1
jne 0x412d49
cmp dword [ecx + 0x44], 0x80
jbe 0x412d49
shr dl, 1
test dl, dl
je 0x412d49
add eax, 8
mov ecx, dword [esp + 0x74]
cmp ecx, eax
je 0x412d75
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x4131b4
mov edx, dword [ecx + 4]
test edx, edx
jne 0x4131b4
cmp dword [ecx], 0x10
jb 0x412d79
jmp 0x4131b4
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x412f1c
movzx edx, byte [ecx + 0xf]
and edx, 0x1f
cmp dl, 0x13
jne 0x413158
mov dword [esp + 0x3c], ecx
movzx edx, word [ecx + 0x22]
test dx, 0x8000
jne 0x4130be
cmp word [ecx + 0x20], 1
jne 0x413036
movzx edx, byte [ecx + 0xc]
test dl, 1
je 0x412dc3
mov edx, 0x34
jmp 0x412dc8
mov edx, 0x24
mov edx, dword [ecx + edx]
mov dword [esp + 0x40], edx
cmp edx, eax
je 0x412ec3
movzx ebx, byte [edx + 0xf]
and ebx, 0x1f
cmp bl, 0x16
jne 0x412e7c
movzx ebx, byte [edx + 0xc]
test bl, 1
jne 0x412df4
xor ebx, ebx
jmp 0x412df7
lea ebx, [edx + 0x24]
test ebx, ebx
je 0x412e6f
movzx ebx, byte [eax + 0xc]
test bl, 1
jne 0x412e08
xor ebx, ebx
jmp 0x412e67
movzx ebx, byte [eax + 0xf]
and ebx, 0x1f
cmp bl, 0x14
ja 0x412e3c
cmp bl, 0x12
ja 0x412e2d
cmp bl, 0x11
jne 0x412e23
lea ebx, [eax + 0x2c]
jmp 0x412e67
cmp bl, 0x12
jne 0x412e64
lea ebx, [eax + 0x28]
jmp 0x412e67
cmp bl, 0x13
jne 0x412e37
lea ebx, [eax + 0x24]
jmp 0x412e67
lea ebx, [eax + 0x30]
jmp 0x412e67
cmp bl, 0x16
ja 0x412e50
cmp bl, 0x15
jne 0x412e4b
lea ebx, [eax + 0x38]
jmp 0x412e67
lea ebx, [eax + 0x24]
jmp 0x412e67
cmp bl, 0x17
jne 0x412e5a
lea ebx, [eax + 0x24]
jmp 0x412e67
cmp bl, 0x19
jne 0x412e64
lea ebx, [eax + 0x30]
jmp 0x412e67
lea ebx, [eax + 0x20]
test ebx, ebx
jne 0x412fae
mov ebx, dword [edx + 0x20]
cmp dword [eax + 0x20], ebx
je 0x412ec3
jmp 0x412fae
cmp bl, 0x14
jne 0x412fae
mov ebx, dword [edx + 0x28]
test ebx, ebx
je 0x412ec3
mov ebx, dword [esp + 0x70]
test ebx, ebx
jne 0x412e98
xor ebx, ebx
jmp 0x412ebb
mov dword [esp], edx
mov dword [esp + 4], ebx
mov byte [esp + 8], 1
call sym.runtime.getitab
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov ebx, eax
mov eax, dword [esp + 0x44]
test ebx, ebx
je 0x412fae
movzx ebx, word [ecx + 0x22]
and ebx, 0x7fff
nop
test bx, bx
jne 0x412ed9
xor esi, esi
xor ecx, ecx
jmp 0x412f16
movzx ebp, byte [ecx + 0xc]
xchg ebp, eax
test al, 1
xchg ebp, eax
je 0x412eeb
mov ebp, 0x34
jmp 0x412ef0
mov ebp, 0x24
movzx esi, word [ecx + 0x20]
movzx edi, si
mov dword [esp + 0x38], edi
shl edi, 2
add ebx, esi
movzx ebx, bx
mov esi, dword [esp + 0x38]
sub ebx, esi
mov esi, ebx
neg ebx
sar ebx, 0x1f
and edi, ebx
add ecx, ebp
add ecx, edi
xor ebx, ebx
xor ebp, ebp
jmp 0x412f58
lea eax, [sym.runtime.SetFinalizer.func1]
mov dword [esp + 0x64], eax
lea eax, [esp + 0x70]
mov dword [esp + 0x68], eax
lea eax, [esp + 0x64]
mov dword [esp], eax
call sym.runtime.systemstack
add esp, 0x6c
ret
add esp, 0x6c
ret
mov edi, dword [ecx + ebx*4]
movzx eax, byte [edi + 0xd]
lea ebp, [ebp + eax - 1]
neg eax
and ebp, eax
inc ebx
add ebp, dword [edi]
mov eax, dword [esp + 0x44]
cmp esi, ebx
jg 0x412f42
lea eax, [ebp + 3]
and eax, 0xfffffffc
mov dword [esp + 0x34], eax
nop
call sym.runtime.createfing
lea eax, [sym.runtime.SetFinalizer.func2]
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x70]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x78]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call sym.runtime.systemstack
add esp, 0x6c
ret
mov dword [esp], eax
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x3c]
mov dword [esp], edx
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp], 0
lea edx, [0x51d688]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x22
mov edx, dword [esp + 0x48]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x10], edx
lea edx, [0x5165b5]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 0xe
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
call sym.runtime.concatstring4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.runtime.throw
mov dword [esp], eax
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x3c]
mov dword [esp], edx
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp], 0
lea edx, [0x51d688]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x22
mov edx, dword [esp + 0x48]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x10], edx
lea edx, [0x5165b5]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 0xe
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
call sym.runtime.concatstring4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.runtime.throw
mov dword [esp], eax
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x3c]
mov dword [esp], edx
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp], 0
lea edx, [0x51d688]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x22
mov edx, dword [esp + 0x48]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x10], edx
lea edx, [0x5165b5]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 0xe
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
lea eax, [0x517b4b]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], 0x12
call sym.runtime.concatstring5
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.runtime.throw
mov dword [esp], ecx
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp], 0
lea edx, [0x51ece1]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x29
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [0x517017]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0x10
call sym.runtime.concatstring3
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.runtime.throw
lea eax, [0x52100e]
mov dword [esp], eax
mov dword [esp + 4], 0x41
call sym.runtime.throw
add esp, 0x6c
ret
mov ecx, dword [ecx + 0x120]
mov eax, edx
test ecx, ecx
je 0x413206
mov edx, eax
cmp dword [ecx + 0x60], eax
ja 0x4131e6
cmp dword [ecx + 0x64], eax
ja 0x4131ca
cmp dword [ecx + 0x68], eax
ja 0x4131f0
cmp dword [ecx + 0x6c], eax
ja 0x4131ca
cmp dword [ecx + 0x70], eax
ja 0x4131fa
cmp dword [ecx + 0x74], eax
ja 0x4131ca
cmp dword [ecx + 0x78], eax
ja 0x4131ce
cmp dword [ecx + 0x7c], eax
jbe 0x4131ce
jmp 0x4131ca
lea eax, [0x52040a]
mov dword [esp], eax
mov dword [esp + 4], 0x34
call sym.runtime.throw
lea eax, [0x520ecc]
mov dword [esp], eax
mov dword [esp + 4], 0x40
call sym.runtime.throw
lea eax, [0x5165a7]
mov dword [esp], eax
mov dword [esp + 4], 0xe
call sym.runtime.throw
mov dword [esp], eax
call sym.runtime.rtype.string
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp], 0
lea edx, [0x51e9e5]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x28
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [0x516062]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0xd
call sym.runtime.concatstring3
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.runtime.throw
lea eax, [0x51f293]
mov dword [esp], eax
mov dword [esp + 4], 0x2b
call sym.runtime.throw
nop
call sym.runtime.morestack_noctxt
jmp sym.runtime.SetFinalizer