Function at 0x403ff0
Capabilities:
Encode data using base64

Disassembly:
sub esp, 0x1c
mov eax, dword [esp + 0x24]
push ebx
mov ebx, dword [esp + 0x24]
push ebp
push esi
push edi
imul esi, dword [ebx + 0x18], 0x64
mov edi, dword [eax]
add esi, 0x5237b8
mov dword [esp + 0x14], esi
cmp byte [esi + 0x10], 0
movzx ebp, byte [esi + 4]
je 0x40402a
push eax
lea eax, [ebx + 0x1c]
push eax
call fcn.00403440
push 0x51159c
jmp 0x40403c
mov eax, dword [eax + 0x24]
test eax, eax
je 0x404045
push 0x51150d
push eax
push 0x511520
push edi
call fcn.00401010
add esp, 0x10
push dword [esi]
push 0x5119c8
push edi
call fcn.00401010
add esp, 0xc
xor esi, esi
mov ecx, 0x5118d4
test ebp, ebp
je 0x4040ab
add ebx, 0x58
test esi, esi
mov eax, 0x511578
cmove eax, ecx
push eax
push edi
call fcn.00401010
push esi
push dword [esp + 0x3c]
call fcn.00409ae0
push eax
push dword [esp + 0x48]
push ebx
call fcn.004063c0
inc esi
add esp, 0x1c
add ebx, 0x10
mov ecx, 0x5118d4
cmp esi, ebp
jb 0x404063
push 0x511590
push edi
call fcn.00401010
mov ebx, dword [esp + 0x38]
add esp, 8
mov eax, dword [esp + 0x14]
xor edx, edx
mov dword [esp + 0x1c], edx
mov cl, byte [eax + 0x14]
test cl, cl
je 0x4041a2
mov esi, 0x51150d
nop word [eax + eax]
movzx ebp, byte [eax + edx + 0x15]
test edx, edx
mov ecx, 0x5118d4
mov eax, 0x511578
cmove eax, ecx
push eax
push edi
call fcn.00401010
lea eax, [ebp - 1]
add esp, 8
cmp eax, 0x3d
ja case.0x404101.2
movzx eax, byte [eax + 0x405138]
jmp dword [eax*4 + 0x4050d8]
imul eax, dword [ebx + 0x18], 0x64
push str.wrmask
push edi
movzx eax, byte [eax + 0x5237d6]
mov ebx, dword [ebx + eax*4 + 0x30]
call fcn.00401010
mov ebp, dword [esp + 0x38]
add esp, 8
xor esi, esi
mov dl, byte [ebp + 0x30]
test dl, dl
je 0x40416a
mov eax, ebx
mov ecx, esi
shr eax, cl
test al, 1
je 0x40415f
cmp dl, 4
mov ecx, str.xyzw
mov eax, str.abcdefghijklmnop
cmovbe eax, ecx
movsx eax, byte [eax + esi]
push eax
push 0x5115dc
push edi
call fcn.00401010
add esp, 0xc
mov dl, byte [ebp + 0x30]
inc esi
movzx eax, dl
cmp esi, eax
jb 0x404132
mov ebx, ebp
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov cl, byte [esi + 0x14]
inc edx
movzx eax, cl
mov esi, 0x51150d
cmp edx, eax
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x14]
jb 0x4040d0
test cl, cl
je 0x4041a2
push 0x511590
push edi
call fcn.00401010
add esp, 8
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 4]
test edx, edx
je 0x4050cf
mov ebx, dword [ebx + 0x18]
cmp ebx, 0x158
jg 0x404fe2
je 0x404fdb
mov eax, ebx
sub eax, 0x132
je 0x404fdb
sub eax, 5
je 0x404fdb
sub eax, 0x1c
je 0x404ff9
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
imul eax, dword [ebx + 0x18], 0x64
movzx eax, byte [eax + 0x5237e0]
imul eax, dword [ebx + eax*4 + 0x30], 0x64
push dword [eax + 0x514518]
push str.reduction_op_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
push 0x5119e4
push edi
movzx eax, byte [eax + 0x523806]
mov esi, dword [ebx + eax*4 + 0x30]
call fcn.00401010
add esp, 8
cmp esi, 0x10
ja case.default.0x40423c
jmp dword [esi*4 + 0x405178]
push str.iadd
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.imin
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.umin
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.imax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.umax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.iand
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push 0x511a20
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.ixor
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.xchg
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.fadd
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.fmin
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.fmax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.cmpxchg
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.fcmpxchg
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.inc_wrap
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.dec_wrap
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push str.ordered_add
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
movzx eax, byte [eax + 0x5237e3]
mov eax, dword [ebx + eax*4 + 0x30]
push dword [eax*4 + 0x97e0cc]
push str.image_dim_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
mov ecx, str.true
movzx eax, byte [eax + 0x5237e4]
cmp dword [ebx + eax*4 + 0x30], 0
mov eax, str.false
cmove ecx, eax
push ecx
push str.image_array_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
movzx eax, byte [eax + 0x5237e5]
push dword [ebx + eax*4 + 0x30]
call fcn.004611d0
add esp, 4
test eax, eax
jne 0x404414
mov eax, 0x5114ec
push eax
push str.format_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, dword [eax + 8]
push eax
push str.format_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
movzx eax, byte [eax + 0x5237eb]
mov eax, dword [ebx + eax*4 + 0x30]
cmp eax, 0x3b9ce510
jg 0x404555
je 0x40453c
cmp eax, 0xa
ja case.default.0x404454
jmp dword [eax*4 + 0x4051bc]
mov eax, 0x511920
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.texturesampler
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.texture
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.image
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.texture_buffer
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.image_buffer
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, 0x511960
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.SSBO
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.input_att
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.inline_UBO
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
cmp eax, 0x3b9d13f0
je 0x404575
mov eax, str.unknown
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov eax, str.accel_struct
push eax
push str.desc_type_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
push 0x511ac0
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
mov ebp, dword [esp + 0x3c]
push ebp
movzx eax, byte [eax + 0x5237ec]
push dword [ebx + eax*4 + 0x30]
call fcn.004022f0
add esp, 0x10
jmp case.default.0x40423c
push 0x511acc
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
push dword [esp + 0x3c]
movzx eax, byte [eax + 0x5237ed]
push dword [ebx + eax*4 + 0x30]
call fcn.004022f0
add esp, 0x10
jmp case.default.0x40423c
push 0x511ad8
push edi
call fcn.00401010
mov ecx, dword [ebx + 0x18]
add esp, 8
imul eax, ecx, 0x64
movzx eax, byte [eax + 0x5237ee]
mov ebx, dword [ebx + eax*4 + 0x30]
cmp ecx, 0x22d
jne 0x404639
xor esi, esi
nop
mov ecx, esi
mov eax, ebx
shr eax, cl
and eax, 3
push eax
push 0x511ae8
push edi
call fcn.00401010
add esi, 2
add esp, 0xc
cmp esi, 8
jb 0x404610
mov ebx, dword [esp + 0x30]
jmp case.default.0x40423c
cmp ecx, 0x216
jne 0x40466e
mov eax, ebx
shr eax, 0xa
and eax, 0x1f
push eax
mov eax, ebx
and ebx, 0x1f
shr eax, 5
and eax, 0x1f
push eax
push ebx
push str.__id___d____d____d
push edi
call fcn.00401010
mov ebx, dword [esp + 0x44]
add esp, 0x14
jmp case.default.0x40423c
push ebx
push 0x511ae8
push edi
call fcn.00401010
mov ebx, dword [esp + 0x3c]
add esp, 0xc
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
push str.mem_semantics
push edi
movzx eax, byte [eax + 0x5237f7]
mov ebx, dword [ebx + eax*4 + 0x30]
call fcn.00401010
mov eax, ebx
add esp, 8
and eax, 3
sub eax, 0
je 0x4046cc
sub eax, 1
je 0x4046c5
sub eax, 1
je 0x4046be
mov eax, str.ACQREL
jmp 0x4046d1
mov eax, 0x511b20
jmp 0x4046d1
mov eax, 0x511b1c
jmp 0x4046d1
mov eax, str.NONE
push eax
push edi
call fcn.00401010
add esp, 8
test bl, 4
je 0x4046ee
push str.AVAILABLE
push edi
call fcn.00401010
add esp, 8
test bl, 8
je 0x404630
push str.VISIBLE
push edi
call fcn.00401010
mov ebx, dword [esp + 0x38]
add esp, 8
jmp case.default.0x40423c
push str.mem_modes
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
add esp, 8
movzx eax, byte [eax + 0x5237f8]
mov esi, dword [ebx + eax*4 + 0x30]
test esi, esi
jne 0x40473f
push edi
push 0x30
call fcn.004f6efc
add esp, 8
jmp case.default.0x40423c
mov ebp, 0x51150d
bsf ecx, esi
je 0x40474c
inc ecx
jmp 0x40474e
xor ecx, ecx
dec ecx
mov eax, 0x5118d8
btc esi, ecx
test esi, esi
cmove eax, ebp
push eax
mov eax, 1
shl eax, cl
push 1
push eax
call fcn.00401910
add esp, 8
push eax
push 0x51174c
push edi
call fcn.00401010
add esp, 0x10
test esi, esi
jne 0x404744
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
cmp ebp, 0x24
jne 0x404799
movzx eax, byte [eax + 0x5237f9]
jmp 0x4047a0
movzx eax, byte [eax + 0x5237fa]
mov eax, dword [ebx + eax*4 + 0x30]
push eax
call fcn.0045fb10
push 6
mov esi, eax
push str.SCOPE_
push esi
call fcn.004f7140
test eax, eax
lea ecx, [esi + 6]
cmovne ecx, esi
push ecx
push dword [ebp*4 + 0x97e110]
push str._s_s
push edi
call fcn.00401010
add esp, 0x20
jmp case.default.0x40423c
mov ecx, dword [ebx + 0x18]
mov edx, 0x3c000
imul eax, ecx, 0x64
movzx esi, byte [eax + 0x5237fb]
mov esi, dword [ebx + esi*4 + 0x30]
mov dword [esp + 0x18], esi
cmp ecx, 0x153
jg 0x404819
je 0x404844
sub ecx, 0xed
cmp ecx, 0x4a
ja case.0x404812.238
movzx eax, byte [ecx + 0x4051f0]
jmp dword [eax*4 + 0x4051e8]
cmp ecx, 0x264
jg 0x40483c
je 0x404844
cmp ecx, 0x158
je case.0x404812.237
cmp ecx, 0x263
je 0x404844
jmp case.0x404812.238
mov edx, 4
jmp case.0x404812.238
cmp ecx, 0x265
jne case.0x404812.238
mov edx, 8
mov ebp, dword [esp + 0x34]
lea eax, [esp + 0x28]
push eax
push edx
mov eax, dword [ebp + 4]
movsx eax, byte [eax + 0x44]
push eax
mov eax, esi
and eax, 0x7f
push eax
call fcn.00401780
shr esi, 7
and esi, 0x3f
push esi
push eax
push str.io_location_s_slots_u
push edi
call fcn.00401010
mov eax, dword [esp + 0x38]
add esp, 0x20
test eax, eax
jns 0x404896
push str._per_primitive
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x40000000
je 0x4048af
push str._explicit_strict
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x2000
je 0x4048c8
push str._dualsrc
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x4000
je 0x4048e1
push str._fbfetch
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x1000000
je 0x4048fa
push str._perview
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x800000
je 0x404913
push str._mediump
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x2000000
je 0x40492c
push str._high_16bits
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x4000000
je 0x404945
push str._invariant
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x8000000
je 0x40495e
push str._high_dvec2
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x10000000
je 0x404977
push str._no_varying
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
test eax, 0x20000000
je 0x404990
push str._no_sysval_output
push edi
call fcn.00401010
mov eax, dword [esp + 0x20]
add esp, 8
mov ecx, dword [ebp + 4]
test ecx, ecx
je case.default.0x40423c
cmp byte [ecx + 0x44], 3
jne case.default.0x40423c
mov ecx, dword [ebx + 0x18]
cmp ecx, 0x263
je 0x4049c4
cmp ecx, 0x264
je 0x4049c4
cmp ecx, 0x265
jne case.default.0x40423c
shr eax, 0xf
push str._gs_streams_
push edi
movzx ebp, al
call fcn.00401010
add esp, 8
xor esi, esi
xor ebx, ebx
nop dword [eax]
mov ecx, ebx
mov eax, ebp
shr eax, cl
mov ecx, 0x51150d
and eax, 3
test esi, esi
push eax
movsx eax, byte [esi + str.xyzw]
push eax
mov eax, 0x5115b8
cmove eax, ecx
push eax
push str._s_c_u
push edi
call fcn.00401010
add ebx, 2
add esp, 0x14
inc esi
cmp ebx, 8
jb 0x4049e0
push 0x511590
push edi
call fcn.00401010
mov ebx, dword [esp + 0x38]
add esp, 8
jmp case.default.0x40423c
cmp ebp, 0x27
mov ecx, 0x511c24
mov eax, esi
cmovne eax, ecx
push eax
push str.xfb_s_
push edi
call fcn.00401010
xor ecx, ecx
xor eax, eax
add esp, 0xc
mov dword [esp + 0x18], ecx
cmp ebp, 0x27
mov ebx, 2
mov dl, 1
cmove ebx, eax
mov ebp, dword [esp + 0x30]
imul eax, dword [ebp + 0x18], 0x64
cmp ebx, 2
jae 0x404a77
movzx eax, byte [eax + 0x5237fc]
jmp 0x404a7e
movzx eax, byte [eax + 0x5237fd]
mov eax, dword [ebp + eax*4 + 0x30]
lea ebp, [esp + 0x20]
mov dword [esp + 0x20], eax
lea ebp, [ebp + ecx*2]
mov cl, byte [ebp]
mov al, cl
mov byte [esp + 0x12], cl
and al, 0xf
mov byte [esp + 0x13], al
je 0x404b11
test dl, dl
jne 0x404ab9
push 0x511578
push edi
call fcn.00401010
mov al, byte [esp + 0x1b]
add esp, 8
mov cl, byte [esp + 0x12]
mov byte [esp + 0x13], 0
cmp al, 1
jbe 0x404adf
movzx esi, cl
mov eax, esi
and eax, 0xf
dec eax
add eax, ebx
push eax
push ebx
push str.components_u.._u
push edi
call fcn.00401010
add esp, 0x10
jmp 0x404af3
push ebx
push str.component_u
push edi
call fcn.00401010
movzx esi, byte [esp + 0x1e]
add esp, 0xc
movzx eax, byte [ebp + 1]
shl eax, 2
push eax
shr esi, 4
push esi
push str._buffer_u_offset_u
push edi
call fcn.00401010
mov dl, byte [esp + 0x23]
add esp, 0x10
mov ecx, dword [esp + 0x18]
inc ebx
inc ecx
mov dword [esp + 0x18], ecx
cmp ecx, 2
jb 0x404a61
jmp 0x404a19
push 0x511c6c
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
add esp, 8
movzx eax, byte [eax + 0x523800]
mov eax, dword [ebx + eax*4 + 0x30]
cmp eax, 4
ja case.default.0x404bec
jmp dword [eax*4 + 0x40523c]
mov eax, str.undef
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.rtne
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, 0x511c8c
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, 0x511c90
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, 0x511c94
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.unknown
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push 0x511c98
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
add esp, 8
movzx eax, byte [eax + 0x5237fe]
mov eax, dword [ebx + eax*4 + 0x30]
cmp eax, 0x11
ja case.default.0x404bec
jmp dword [eax*4 + 0x405250]
mov eax, str.intersection_type
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_t
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_instance_custom_index
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_instance_id
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_instance_sbt_index
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_geometry_index
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_primitive_index
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_barycentrics
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_front_face
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_object_ray_direction
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_object_ray_origin
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_object_to_world
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_world_to_object
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.intersection_candidate_aabb_opaque
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.tmin
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.flags
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.world_ray_direction
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.world_ray_origin
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
push 0x511e80
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
add esp, 8
movzx eax, byte [eax + 0x523808]
mov esi, dword [ebx + eax*4 + 0x30]
test esi, esi
jne 0x404d8c
push edi
push 0x30
call fcn.004f6efc
add esp, 8
jmp case.default.0x40423c
mov ebx, 0x51150d
bsf ecx, esi
je 0x404d99
inc ecx
jmp 0x404d9b
xor ecx, ecx
dec ecx
mov eax, 1
shl eax, cl
btc esi, ecx
dec eax
cmp eax, 0xf
ja case.0x404db3.3
movzx eax, byte [eax + 0x4052b0]
jmp dword [eax*4 + 0x405298]
mov eax, str.bindless
jmp 0x404de2
mov eax, str.pushable
jmp 0x404de2
mov eax, 0x511920
jmp 0x404de2
mov eax, str.non_uniform
jmp 0x404de2
mov eax, str.sampler_embedded
jmp 0x404de2
mov eax, str.unknown
push eax
push edi
call fcn.00401010
test esi, esi
mov eax, 0x5118d8
cmove eax, ebx
push eax
push 0x51158c
push edi
call fcn.00401010
add esp, 0x14
test esi, esi
jne 0x404d91
mov ebx, dword [esp + 0x30]
jmp case.default.0x40423c
push 0x511ec8
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
push 0x5118d8
push dword [esp + 0x40]
movzx eax, byte [eax + 0x5237e6]
push dword [ebx + eax*4 + 0x30]
call fcn.004020b0
add esp, 0x14
jmp case.default.0x40423c
push 0x511ed0
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
add esp, 8
movzx eax, byte [eax + 0x523811]
mov eax, dword [ebx + eax*4 + 0x30]
sub eax, 1
je 0x404e8e
sub eax, 1
je 0x404e7a
mov eax, str.unknown
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.row_major
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
mov eax, str.col_major
push eax
push edi
call fcn.00401010
add esp, 8
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
movzx eax, byte [eax + 0x523810]
mov eax, dword [ebx + eax*4 + 0x30]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x24]
push eax
call fcn.0045c650
push eax
call fcn.0045dba0
push eax
push 0x51158c
push edi
call fcn.00401010
add esp, 0x14
jmp case.default.0x40423c
push str.cmat_signed
push edi
call fcn.00401010
imul eax, dword [ebx + 0x18], 0x64
add esp, 8
movzx eax, byte [eax + 0x523812]
mov esi, dword [ebx + eax*4 + 0x30]
test esi, esi
jne 0x404f0a
push edi
push 0x30
call fcn.004f6efc
add esp, 8
jmp case.default.0x40423c
mov ebx, 0x51150d
nop
bsf ecx, esi
je 0x404f18
inc ecx
jmp 0x404f1a
xor ecx, ecx
dec ecx
mov eax, 1
shl eax, cl
btc esi, ecx
dec eax
cmp eax, 7
ja case.0x404f2b.3
jmp dword [eax*4 + 0x4052c0]
push edi
push 0x41
call fcn.004f6efc
jmp 0x404f62
push edi
push 0x42
call fcn.004f6efc
jmp 0x404f62
push edi
push 0x43
call fcn.004f6efc
jmp 0x404f62
push str.Result
jmp 0x404f5c
push str.unknown
push edi
call fcn.00401010
add esp, 8
mov eax, 0x5118d8
test esi, esi
cmove eax, ebx
push eax
push 0x51158c
push edi
call fcn.00401010
add esp, 0xc
test esi, esi
jne 0x404f10
mov ebx, dword [esp + 0x30]
jmp case.default.0x40423c
imul eax, dword [ebx + 0x18], 0x64
movzx eax, byte [eax + 0x523813]
imul eax, dword [ebx + eax*4 + 0x30], 0x64
push dword [eax + 0x514518]
push str.alu_op_s
push edi
call fcn.00401010
add esp, 0xc
jmp case.default.0x40423c
mov esi, dword [esp + 0x14]
movzx eax, byte [esi + ebp + 0x1d]
push dword [ebx + eax*4 + 0x30]
push dword [ebp*4 + 0x97e110]
push str._s_d
push edi
call fcn.00401010
add esp, 0x10
jmp 0x404170
mov eax, 4
jmp 0x405005
mov eax, ebx
sub eax, 0x1f3
je 0x405000
sub eax, 0x70
je 0x404ff9
sub eax, 2
jne 0x4050cf
mov eax, 8
jmp 0x405005
mov eax, 2
mov esi, dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov ecx, dword [esi + 0x54]
test ecx, ecx
je 0x40501a
push ecx
jmp 0x4050c1
mov edx, dword [edx + 4]
xor ecx, ecx
cmp dword [edx], ecx
cmove edx, ecx
test edx, edx
je 0x4050cf
nop dword [eax]
test dword [edx + 0x10], eax
je 0x4050a9
mov ebp, dword [edx + 0xc]
test ebp, ebp
je 0x4050a9
imul eax, dword [esi + 0x18], 0x64
cmp ebx, 0x1f3
jne 0x40505b
movzx ecx, byte [eax + 0x5237d5]
mov eax, dword [edx + 0x34]
cmp eax, dword [esi + ecx*4 + 0x30]
sete al
jmp 0x4050a1
mov esi, dword [edx + 0x14]
movzx eax, byte [eax + 0x5237dd]
mov ecx, dword [esp + 0x30]
shr esi, 3
and esi, 3
cmp dword [ecx + eax*4 + 0x30], esi
jb 0x40509d
mov eax, dword [edx + 8]
movzx ecx, byte [eax + 0x11]
movzx eax, byte [eax + 0x10]
imul ecx, eax
imul eax, ebx, 0x64
add ecx, esi
mov esi, dword [esp + 0x30]
movzx eax, byte [eax + 0x5237dd]
cmp dword [esi + eax*4 + 0x30], ecx
jae 0x40509f
mov al, 1
jmp 0x4050a1
mov esi, ecx
xor al, al
test al, al
jne 0x4050c0
mov eax, dword [esp + 0x34]
mov edx, dword [edx]
cmp dword [edx], 0
je 0x4050cf
test edx, edx
jne 0x405030
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
push ebp
push str.______s
push edi
call fcn.00401010
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret